智能分析:ChatGPT+Excel+Python超强组合玩转数据分析
Python+Copilot/ChatGPT, Excel未来已来
话说天下大势,合久必分,分久必合。于数据分析而言,近几年是实实在在的多事之秋。
首先是顶流Python高举卷王之王的大旗向传统王者VBA抢班夺权,pandas, xlwings、OpenPyXL和Matplotlib等第三方包已经具备VBA和Power Query的几乎所有功能。
然后是2023年初ChatGPT席卷而来,语言大模型开始接管一切,改变一切。人们从质疑、嘲笑、观望、到骂骂咧咧地开始接受。
8月,微软开启Excel内置Python的Beta测试,Python名正言顺地嵌入Excel,与VBA并驾齐驱。11月1日,微软经过7个多月的测试后,正式发布Microsoft 365 Copilot。什么是Copilot?我的理解是ChatGPT+微软独家秘制语料库!
10月17日,国内金山软件与科大讯飞宣布合作,要在WPS中做中国版的Copilot。智能分析的理想已经照进现实,真实并且热烈!
提示词:追求生成的代码不需修改
“ChatGPT何许人也,仿佛一夜之间,如此汹汹?”
“不必惊慌,无它,一聊天机器人尔!专家讲的自然语言、神经网络、深度学习和大模型,咱们不用理会,只需要向它提问题,等它回答完以后,如此,这般……即可,操作简单而不失粗暴。”
向ChatGPT提的问题美其名曰提示词。提示词的好坏,直接关系到答案的好坏。所以,提示词里有黄金,提示词里颜如玉。君不闻新晋职业提示词工程师者,年薪百万乎?
ChatGPT可以帮我们写文章、写文案、写诗、画画,才华横溢。但是作为数据分析师,我们让它写代码,并且殷切希望写的代码不需要修改!如果代码需要修改,对于不懂编程的同学代码是毫无意义的,因为不会改;对于略懂编程的同学,可能调试代码找错花的时间比自己编写用得还多,不划算。
记住,我们追求的目标是让ChatGPT生成的代码不需要修改。
下面结合一个实例介绍用ChatGPT生成pandas代码分析数据的过程。
图1所示工作表中A-C列是不同班学生的考试成绩,要求计算各班学生考试成绩的平均分。这是一个分组统计问题。
根据题意编写好ChatGPT的提示词,如下所示:
你是pandas专家,文件路径为:D:/Samples/ch03/02 各班学生成绩.xlsx。该Excel文件的第一个工作表中A-C列为给定数据。A-C列分别为“班级”、“姓名”和“成绩”。用pandas导入Excel文件的数据,引擎为"openpyxl"。请计算各班学生成绩的平均分,平均分保留1位小数。输出各班平均成绩,例如:一班 88.5。添加代码注释。
ChatGPT软件的外观很简单,类似于图2中的样子。用户只需要在底下的文本框中向ChatGPT提问即可,答案会显示在文本框上方。使用上面的提示词向ChatGPT提问,返回解决本示例问题的pandas代码,如图2中所示。
ChatGPT生成的代码为:
import pandas as pd
# 读取Excel文件数据
df = pd.read_excel('D:/Samples/ch01/各班学生成绩.xlsx', engine='openpyxl')
# 计算各班学生成绩的平均分
average_scores = df.groupby('班级')['成绩'].mean().round(1)
# 输出各班平均成绩