大家好,我是小寒。
python 不会写怎么办,那当然问 chatgpt 呀。
今天,我们一起来看下 chatgpt 到底能给我们提供多大的帮助。
一、简单的数据处理脚本
我认为一个好的起点是某种数据处理脚本。
目标
提示
编写一个执行以下操作的 Python 脚本:
将数据集从磁盘上的 csv 加载到 Pandas DataFrame 确保数据集完全是数字;将字符串值转换为数字并在字典中跟踪此转换以供后续使用
检查 DataFrame 中的缺失值并为具有一个缺失值的任何记录估算缺失值;完全删除具有多个缺失值的记录
将数据集拆分为测试集和训练集
ChatGPT 回答

分析
ChatGPT 按照我们的提示,完美的给出了一个有用的脚本。
它决定了数据集名称以及训练集/测试集拆分百分比。总的来说,任务完成了。
二、重构我们的代码
目标
现在我们有了一个可以做某事的脚本,让我们稍微重构一下。
良好编码的基石是使用函数来组织你的代码,促进重用。
提示
重写上面的脚本,使用一系列有意义的函数。
ChatGPT 回答

在这里,一共使用了四个函数。
load_dataset(file_path) 加载 csv 数据集。 convert_to_numeric(df) 将字符串值转换为数字。 handle_missing_values(df) 处理数据集中的缺失值。 split_dataset(df, test_ratio=0.2) 数据集拆分为测试集和训练集。
分析
这一步,ChatGPT 完全符合我的预期。同样,已经生成了一个不错的脚本。
三、扩展我们的代码
目标
提示
数据集 csv 文件的路径和名称 训练集/测试集拆分大小 缺失数量的阈值,然后删除整个记录,而不是估算缺失值
ChatGPT 的回答

python script.py dataset.csv 0.2 1
这将使用 “dataset.csv” 文件运行脚本,test_size 为 0.2,缺失值的阈值为 1。
四、将我们的代码转换为 Streamlit 应用程序
目标
现在让我们使用 ChatGPT 将这些功能包装在 Streamlit 应用程序中。
提示
ChatGPT 回答
import streamlit as st
import pandas as pd
import numpy as np
def load_dataset(file_path):
"""从磁盘上的 csv 加载数据集到 Pandas DataFrame"""
return pd.read_csv(file_path)
def convert_to_numeric(df):
"""
将 DataFrame 中的字符串值转换为数字,并在字典中跟踪此转换以供后续参考。
返回转换后的 DataFrame 和转换字典。
"""
conversion_dict = {}
for column in df.columns:
if df[column].dtype == np.object:
unique_values = df[column].unique()
conversion_dict[column] = {}
for i, value in enumerate(unique_values):
df[column].replace(value, i, inplace=True)
conversion_dict[column][i] = value
return df, conversion_dict
def handle_missing_values(df, missing_threshold):
"""
检查 DataFrame 中的缺失值并根据指定的缺失值数量阈值进行处理。
返回处理后的 DataFrame。
"""
missing_values = df.isnull().sum()
for column in df.columns:
if missing_values[column] > 0:
if missing_values[column] > missing_threshold:
# 删除记录
df.dropna(subset=[column], inplace=True)
else:
# 估算缺失值
df[column].fillna(df[column].mean(), inplace=True)
return df
def split_dataset(df, test_ratio):
"""将数据集拆分为测试集和训练集,并返回它们的元组"""
shuffled_df = df.sample(frac=1, random_state=42) # 随机重排
test_size = int(len(df) * test_ratio)
test_set = shuffled_df[:test_size]
train_set = shuffled_df[test_size:]
return train_set, test_set
# 设置页面标题
st.title("数据集处理应用")
# 获取用户提供的参数
data_file = st.file_uploader("选择 CSV 文件", type="csv")
test_ratio = st.slider("测试集大小", 0.0, 1.0, 0.2, 0.05)
threshold = st.slider("缺失值数量的阈值", 0, 10, 2, 1)
# 处理数据集
if data_file:
df = load_dataset(data_file)
st.write("数据集的原始形状:", df.shape)
# 将 DataFrame 中的字符串值转换为数字,并记录转换字典
df, conversion_dict = convert_to_numeric(df)
# 处理缺失值
df = handle_missing_values(df, threshold)
# 将数据集拆分为测试集和训练集
train_set, test_set = split_dataset(df, test_ratio)
# 显示数据集的处理结果
st.write("处理后的数据集的形状:", df.shape)
st.write("训练集的形状:", train_set.shape)
st.write("测试集的形状:", test_set.shape)
st.write("转换字典:", conversion_dict)
然后用户可以单击 “处理数据” 按钮来运行脚本并预处理数据。
streamlit run script.py
下面,我们来看看运行后的效果。

总结
在本文中,我们充分体会到了 ChatGPT 的强大的编程能力。

最后
—
「进群方式:加我微信,备注 “python”」

往期回顾







如果对本文有疑问可以加作者微信直接交流。进技术交流群的可以拉你进群。

文章转载自程序员学长,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




