暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何让 ChatGPT 成为你的 Python 编程助手

程序员学长 2023-04-27
727

大家好,我是小寒。

python 不会写怎么办,那当然问 chatgpt 呀。

今天,我们一起来看下 chatgpt 到底能给我们提供多大的帮助

让我们看看 ChatGPT 在根据我们提供的 “ prompt(提示)” 编写一些代码时可以做什么。

一、简单的数据处理脚本

我认为一个好的起点是某种数据处理脚本。

因为我打算让 ChatGPT 之后使用各种 Python 库编写一些机器学习脚本,所以这似乎是一个合理的起点。

目标

首先,我想尝试加载一个数据集;确保数据集所有列的值都是数值,或将它们转换为数值;检查缺失值;并将数据集拆分为训练集和测试集。

提示

编写一个执行以下操作的 Python 脚本:

  • 将数据集从磁盘上的 csv 加载到 Pandas DataFrame
  • 确保数据集完全是数字;将字符串值转换为数字并在字典中跟踪此转换以供后续使用

  • 检查 DataFrame 中的缺失值并为具有一个缺失值的任何记录估算缺失值;完全删除具有多个缺失值的记录

  • 将数据集拆分为测试集和训练集

ChatGPT 回答

分析

ChatGPT 按照我们的提示,完美的给出了一个有用的脚本。

它决定了数据集名称以及训练集/测试集拆分百分比。总的来说,任务完成了。

二、重构我们的代码

目标

现在我们有了一个可以做某事的脚本,让我们稍微重构一下。

良好编码的基石是使用函数来组织你的代码,促进重用

提示

重写上面的脚本,使用一系列有意义的函数。

ChatGPT 回答

在这里,一共使用了四个函数。

  1. load_dataset(file_path) 加载 csv 数据集。
  2. convert_to_numeric(df) 将字符串值转换为数字。
  3. handle_missing_values(df) 处理数据集中的缺失值。
  4. split_dataset(df, test_ratio=0.2) 数据集拆分为测试集和训练集。
主脚本使用这些函数来加载、转换和清理数据集,然后将其拆分为测试集和训练集。

分析

这一步,ChatGPT 完全符合我的预期。同样,已经生成了一个不错的脚本。

三、扩展我们的代码

目标

接下来,让我们稍微扩展一下脚本,以便用户可以在运行脚本时指定一些参数。

提示

重写上面的程序,以参数的形式从命令行中获取以下内容,并在程序中使用它们:
  • 数据集 csv 文件的路径和名称
  • 训练集/测试集拆分大小
  • 缺失数量的阈值,然后删除整个记录,而不是估算缺失值

ChatGPT 的回答

在此版本中,ChatGPT 使用 argparse 模块将文件路径、测试集/训练集分割大小和每条记录缺失值数量的阈值作为命令行参数作为输入。
用户必须使用正确的参数运行脚本,例如:
python script.py dataset.csv 0.2 1

这将使用 “dataset.csv” 文件运行脚本,test_size 为 0.2,缺失值的阈值为 1。

主脚本在函数中使用这些参数来加载、转换和清理数据集,然后将其拆分为测试集和训练集。

四、将我们的代码转换为 Streamlit 应用程序

目标

现在让我们使用 ChatGPT 将这些功能包装在 Streamlit 应用程序中。

提示

将上述程序重写为 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 应用程序,允许用户提供与命令行参数相同的参数。
它使用 Streamlit 库创建一个交互式 Web 应用程序,允许用户输入文件路径、测试集/训练集拆分大小和每条记录缺失值数量的阈值。

然后用户可以单击 “处理数据” 按钮来运行脚本并预处理数据。

它使用与先前版本脚本相同的功能来加载、转换和清理数据集,然后将其拆分为测试集和训练集。
要运行该脚本,你需要安装 Streamlit,你可以在终端中运行命令 pip install streamlit。
安装后,使用命令运行脚本。
streamlit run script.py

下面,我们来看看运行后的效果。

总结

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

ChatGPT 按照我们的提示,完美的实现了我们需要的脚本,看来程序员被替代不远了....
最后,如果你也想用ChatGPT,而没有魔法的话,可以私信我,我给大家 免费 提供一个平台使用。

                              


最后



今天的分享就到这里。如果觉得不错,点赞,转发安排起来吧。
接下来我们会分享更多的 「深度学习案例以及python相关的技术」,欢迎大家关注。
最后,最近新建了一个 python 学习交流群,会经常分享 「python相关学习资料,也可以问问题,非常棒的一个群」

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



往期回顾


Fashion-MNIST 服装图片分类-Pytorch实现

python 探索性数据分析(EDA)案例分享

深度学习案例分享 | 房价预测 - PyTorch 实现

万字长文 |  面试高频算法题之动态规划系列

面试高频算法题之回溯算法(全文六千字)  

    




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


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

评论