程序员即将失业?ChatGPT正在取代各位!

最近OpenAI的ChatGPT真的是到处都在刷屏,我想你已经看过很多关于ChatGPT的文章或者视频了,我就不过多介绍了。

不过你碰巧还不知道的话,可以先百度一下,然后再回来继续。

程序员即将失业?ChatGPT正在取代各位!

与ChatGPT对话很有趣,甚至很有启发性。有人用它聊天,有人用它写代码,太多省时省力的工作,都可以由它完成,我们的内容创作部门已经将ChatGPT用于文案生成。那么对研发,ChatGPT是否有用呢?我做了一个测试,让ChatGPT来完成算法研究中频繁要做的数据清洗和处理问题,结果让人非常满意,以后还招啥工程师,直接找ChatGPT吧!

程序员即将失业?ChatGPT正在取代各位!

 

简单数据处理

我们首先从简单的任务入手,让ChatGPT完成数据加载和简单的清洗工作。

任务目标

  1. 加载数据集;
  2. 确保数据集中所有值均为数值类型,如果不是则尝试将其转换为数值类型;
  3. 检查缺失值;
  4. 数据集分成训练集和测试集。

上面这4个任务是算法执行前必须要做的常规工作。我们看一下ChatGPT的表现

输出结果

程序员即将失业?ChatGPT正在取代各位!

import pandas as pd
import numpy as np

def load_csv_data(file_path):
    # Load the csv file into a pandas DataFrame
    df = pd.read_csv(file_path)
    
    # Convert string type data to numeric type and save the mapping in a dictionary
    conversion_map = {}
    for column in df.columns:
        if df[column].dtype == 'O':
            unique_values = df[column].unique()
            conversion_map[column] = {unique_values[i]: i for i in range(len(unique_values))}
            df[column] = df[column].map(conversion_map[column])
    
    # Check for missing values
    missing_value_counts = df.isnull().sum()
    for column, missing_count in missing_value_counts.items():
        if missing_count > 1:
            df.drop(df[df[column].isnull()].index, inplace=True)
        elif missing_count == 1:
            df[column].fillna(df[column].mean(), inplace=True)
    
    # Split the dataset into training and validation sets
    train_df = df.sample(frac=0.8, random_state=0)
    val_df = df.drop(train_df.index)
    
    return train_df, val_df, conversion_map
# 新的一年,必须卷死同学、同事,狠狠的提升一波自己的Python实力。
# 这里我给大家准备了2023最新的Python学习资料、电子书、基础视频教程、实战案例,直接在这个扣裙自取即可(708525271)

 

分析

上面代码可以完美完成目标任务,从csv文件中加载数据集,并以80/20的比例将数据集拆分为测试集和训练集,关键逻辑还加上了注释,ChatGPT甚至贴心的给出了函数使用方法。

ChatGPT生成上面代码总共用时116秒,同时我们的数据工程师编写同样功能的代码用时225秒。二者的代码差异不大,但是我们的数据工程师没写注释。

上面的任务是数据工程师几乎天天都要写的代码,他们很熟练。我又找了一个大学刚毕业还在实习期的数据助理来写,居然半个小时才完成,由于对接口不熟悉,大量时间花在了百度上[捂脸]。

第一轮比试,从各个维度上,都是ChatGPT胜。

重构代码

在上一轮的比试中,我发现我们的数据工程师有“偷鸡”行为——由于平时经常需要完成上面工作,他将很多功能封装成了独立的函数,用的时候直接引入或拷贝。使用函数按照逻辑组织代码,不仅能够促进代码复用,还有利于代码维护。所以我们接下来试着让ChatGPT重构一下自己的代码。

任务目标

将上面的代码按照功能合理地拆分成若干函数。

输出结果

程序员即将失业?ChatGPT正在取代各位!

import pandas as pd
import numpy as np

def load_csv(file_path):
    return pd.read_csv(file_path)

def convert_strings_to_numeric(df):
    conversion_map = {}
    for column in df.columns:
        if df[column].dtype == 'O':
            unique_values = df[column].unique()
            conversion_map[column] = {unique_values[i]: i for i in range(len(unique_values))}
            df[column] = df[column].map(conversion_map[column])
    return df, conversion_map

def handle_missing_values(df):
    missing_value_counts = df.isnull().sum()
    for column, missing_count in missing_value_counts.items():
        if missing_count > 1:
            df.drop(df[df[column].isnull()].index, inplace=True)
        elif missing_count == 1:
            df[column].fillna(df[column].mean(), inplace=True)
    return df

def split_data(df):
    train_df = df.sample(frac=0.8, random_state=0)
    val_df = df.drop(train_df.index)
    return train_df, val_df

def prepare_data(file_path):
    df = load_csv(file_path)
    df, conversion_map = convert_strings_to_numeric(df)
    df = handle_missing_values(df)
    train_df, val_df = split_data(df)
    return train_df, val_df, conversion_map

 

分析

ChatGPT拆分出5个函数:

  • load_csv(file_path) 负责从csv文件中加载数据集,返回DataFrame;
  • convert_strings_to_numeric(df) 负责将DataFrame中的非数值类型数据转换为数值类型,并记录转换映射表;
  • handle_missing_values(df) 负责处理缺失值;
  • split_data(df) 负责将数据集拆分为训练集和测试集;
  • prepare_data(file_path) 将上面4给函数串起来,构成一个pipeline。

不得不说,ChatGPT有一次完美地完成了任务!并且函数名起得非常好,看函数名就能知道函数的功能,比很多中国程序员用拼音或缩写命名函数友好多了。

扩展代码

重构后的代码结构已经非常清晰了,但是还是有缺陷,那就是不够灵活,很多规则都是写死的。为了让代码更灵活、可扩展性更强,我们一般会将变量以参数的形式传入。

任务目标

重构上面的代码,以参数的形式从命令行传入以下内容:

  • csv格式数据集的路径
  • 拆分训练集和验证集的大小
  • 阈值,缺失值大于此阈值则删除记录,小于等于此阈值则处理缺失值

输出结果

import pandas as pd
import numpy as np
import argparse

def load_csv(file_path):
    return pd.read_csv(file_path)

def convert_strings_to_numeric(df):
    conversion_map = {}
    for column in df.columns:
        if df[column].dtype == 'O':
            unique_values = df[column].unique()
            conversion_map[column] = {unique_values[i]: i for i in range(len(unique_values))}
            df[column] = df[column].map(conversion_map[column])
    return df, conversion_map

def handle_missing_values(df, threshold):
    missing_value_counts = df.isnull().sum()
    for column, missing_count in missing_value_counts.items():
        if missing_count > threshold:
            df.drop(df[df[column].isnull()].index, inplace=True)
        elif missing_count <= threshold:
            df[column].fillna(df[column].mean(), inplace=True)
    return df

def split_data(df, split_ratio):
    train_df = df.sample(frac=split_ratio, random_state=0)
    val_df = df.drop(train_df.index)
    return train_df, val_df

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Prepare data for machine learning.')
    parser.add_argument('file_path', help='Path to the csv file.')
    parser.add_argument('--split-ratio', type=float, default=0.8, help='Ratio of the training set size.')
    parser.add_argument('--threshold', type=int, default=1, help='Threshold for handling missing values.')
    args = parser.parse_args()

    df = load_csv(args.file_path)
    df, conversion_map = convert_strings_to_numeric(df)
    df = handle_missing_values(df, args.threshold)
    train_df, val_df = split_data(df, args.split_ratio)

 

分析

ChatGPT很好地理解了我们的意图,引入了argparse模块来管理和解析命令行参数,关键是参数名起的也非常合理,参数说明也非常准确(尽管是英文的)。参数都正确地传入了所属的函数,又一次完美的完成了任务。

总结

ChatGPT根据我们提供的规范,在创建、重构、扩展一个简单的数据预处理Python脚本方面做得非常出色,每一步的结果都符合要求。虽然这不是一个复杂任务,确实日常工作中最常见的基本工作。ChatGPT的表现确实惊艳了众人,预示着它朝着成为真正有用的编程助手迈出重要的一步。

最终我们从如下几个方面将ChatGPT和我们的数据工程师做了对比:

程序员即将失业?ChatGPT正在取代各位!

可见ChatGPT在编码速度和编码习惯上都完胜人类工程师。这让我不得不开始担心程序员未来的饭碗。是的,你没有看错!程序员这个曾经被认为是最不可能被AI取代的职业,如今将面临来自ChatGPT的巨大挑战。根据测试,ChatGPT已经通过Google L3级工程师测试,这意味着大部分基础coding的工作可以由ChatGPT完成。尽管ChatGPT在涉及业务的任务上表现不佳,但未来更可能的工作方式是架构师或设计师于ChatGPT协同完成工作,不再需要编码的码农。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:程序员即将失业?ChatGPT正在取代各位! - Python技术站

(0)
上一篇 2023年3月31日
下一篇 2023年3月31日

相关文章

  • Python遇上SQL,于是一个好用的Python第三方库出现了

    1. 演示数据 本文的所有演示数据,均是基于下方的四张表。下面这四张表大家应该不陌生,这就是网传50道经典MySQL面试题中使用到的几张原表。关于下方各表之间的关联关系,我就不给大家说明了,仔细观察字段名,应该就可以发现。 2. pandasql的使用 1)简介 pandas中的DataFrame是一个二维表格,数据库中的表也是一个二维表格,因此在panda…

    Python开发 2023年4月2日
    00
  • python一键去PDF水印,只需十行代码,超级简单…

    弟弟最近要考试,临时抱佛脚在网上找了一堆学习资料复习,这不刚就来找我了,说PDF上有水印,影响阅读效果,到时候考不好就怪资料不行,气的我差点当场想把他揍一顿! 算了,弟弟长大了,看在打不过他的份上,就不打他了~ 稍加思索,我想起了Python不是可以去水印?说搞就搞! 去除水印原理 去除方法: 用 PyMuPDF 打开 pdf 文件,将 pdf 的每一页都转…

    Python开发 2023年4月2日
    00
  • Python输出指定时间间隔内的日期

    兄弟们,今天我们来试试用Python输出指定时间间隔内的日期~ 涉及知识点 文件读写 基础语法 字符串处理 循环遍历 代码展示 使用的模块 import platform import datetime # 我还给大家准备了这些资料:2022最新Python视频教程、Python电子书10个G(涵盖基础、爬虫、数据分析、web开发、机器学习、人工智能、面试题…

    Python开发 2023年4月2日
    00
  • Python骚操作,实现驾考自动答题,这就直接满分了?

    Python骚操作来了~ 用Python来实现科目一/四自动答题,100分不要太简单! 最初是表弟最近想买车,但是驾照都没有,买什么车,只能先考驾照~ 看他在网页上练习题目慢吞吞的,我就看不下去了,直接给他来一手揠苗助长~ 当时就用Python整了几十行代码,给他实现一下自动答题,我说你什么时候答题这么快,我就给你买个车! 嘿嘿,悄悄告诉你们,那是不可能的,…

    Python开发 2023年4月2日
    00
  • 过年不让放炮,我用Python实现了1000响大地红的特效

    兄弟们,马上(还有13天)就要过年啦,今年能带对象回家了吗哈哈哈 新的一年,新的气象,穿上新衣准备过大年… 俗话说得好,这所谓放鞭炮就是来压邪祟,除恶的,但是近几年来都不让放炮了,搞得没有一点年尾,不过还好,2023年改革新政策!!!有一部分城市可以进行放鞭炮啦! 在新的一年里祝大家1、六六大顺,七星高照。2、新年快乐,龙马精神。3、官运亨通,美梦连连。4、…

    Python开发 2023年3月31日
    00
  • 王心凌再次爆火,为了防止收费,我连夜用Python把她所有的MV离线

    《乘风破浪的姐姐3》王心凌一骑绝尘,破收视率,多年后再次全网爆火,某音截止现在差不多3500W粉丝,五月份热门女星排名,吊打其它所有人,不愧是我女神! 但是这个热度,感觉她的歌曲和MV,已经离收费越来越近了,于是我连夜用Python把所有MV 和歌曲离线,今天先给大家分享MV的方法。 女神镇楼!     话不多说,我们开冲! 步骤分析 一、数据来源分析 1、…

    2023年4月2日
    00
  • Python:如何只用十几行代码写一个程序?

    Python可以做的事情真的太多了,常见的网站开发,软件开发,爬虫,数据分析,人工智能,机器学习,量化投资,自动化办公,自动化运维,游戏开发,脚本制作,树莓派等等等等~ 今天咱们就来试试用Python做一个简单的程序,只需要十几行代码即可,灰常简单~     知识点 PyQt6 sys   代码展示 #引入类 # 更多好玩的代码 都放在这个群啦 279199…

    2023年4月2日
    00
  • 挑战在代码里面不写for循环,让代码变得更简洁、规范、结构化,以及更好的代码可读性!

    哈喽兄弟们,又是新的一天!今天你敲代码了吗? 一、序言 为什么要挑战自己在代码里不写 for loop?因为这样可以迫使你去学习使用比较高级、比较地道的语法或 library。文中以 python 为例子,讲了不少大家其实在别人的代码里都见过、但自己很少用的语法。 自从我开始探索 Python 中惊人的语言功能已经有一段时间了。一开始,我给自己一个挑战,目的…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部