贼拉刺激!GPT+Excel+Python王炸组合让数据分析起飞!
共 7372字,需浏览 15分钟
·
2024-06-17 18:23
话说天下大势,合久必分,分久必合。
对于 数据分析 而言,近几年是实实在在的多事之秋。
首先是顶流Python高举卷王大旗向传统王者VBA抢班夺权,pandas, xlwings、OpenPyXL和Matplotlib等第三方包已经具备VBA和Power Query的几乎所有功能。
然后是ChatGPT席卷而来,语言大模型开始接管一切,改变一切。
8月,微软开启Excel内置Python的Beta测试,Python名正言顺地嵌入Excel,与VBA并驾齐驱。11月1日,微软经过7个多月的测试后,正式发布Microsoft 365 Copilot。10月17日,国内金山软件与科大讯飞宣布合作,要在WPS中做中国版的Copilot。
智能分析的理想已经照进现实,真实并且热烈!
提示词:追求生成的代码不需修改
ChatGPT可以帮我们写文章、写文案、写诗、画画,才华横溢。但是作为数据分析师,我们让它写代码,并且殷切希望写的代码不需要修改!
如果代码需要修改,对于不懂编程的同学代码是毫无意义的,因为不会改;对于略懂编程的同学,可能调试代码找错花的时间比自己编写用得还多,不划算。
记住,我们追求的目标是让ChatGPT生成的代码不需要修改。
下面结合一个实例介绍用ChatGPT生成pandas代码分析数据的过程。图1所示工作表中A-C列是不同班学生的考试成绩,要求计算各班学生考试成绩的平均分。这是一个分组统计问题。
图1
根据题意编写好ChatGPT的提示词,如下所示:
你是pandas专家,文件路径为:D:/Samples/ch03/02 各班学生成绩.xlsx。该Excel文件的第一个工作表中A-C列为给定数据。A-C列分别为“班级”、“姓名”和“成绩”。用pandas导入Excel文件的数据,引擎为"openpyxl"。请计算各班学生成绩的平均分,平均分保留1位小数。输出各班平均成绩,例如:一班 88.5。添加代码注释。
ChatGPT软件的外观很简单,类似于图2中的样子。用户只需要在底下的文本框中向ChatGPT提问即可,答案会显示在文本框上方。使用上面的提示词向ChatGPT提问,返回解决本示例问题的pandas代码,如图2中所示。
图2
ChatGPT生成的代码为:
import pandas as pd
# 读取Excel文件数据
df = pd.read_excel('D:/Samples/ch01/各班学生成绩.xlsx', engine='openpyxl')
# 计算各班学生成绩的平均分
average_scores = df.groupby('班级')['成绩'].mean().round(1)
# 输出各班平均成绩
for index, value in average_scores.items():
print(f'{index}班 {value}')
打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存到D:/Samples/1.py。运行脚本,在IDLE Shell窗口输出各班的平均成绩。
RESTART: D:/Samples/1.py = > ==
一班 90.6
三班 90.1
二班 88.9
操作的整个过程不需要用户懂编程,编程的工作ChatGPT帮你做了,真正实现了办公自动化。
(点击学习)
ChatGPT数据分析
编程语言和工具的选择
Excel数据分析目前可用的编程语言主要有VBA和Python,其中Python又有pandas, xlwings和OpenPyXL等不同的包。Python的这几个包既可以单独完成任务,又可以优化组合,更高效地完成分析任务。
经过大量测试,目前可以肯定的是,ChatGPT生成的Python代码的成功率要大于生成的VBA代码的成功率,写提示词的难度也更小。成功率指的是代码运行不出错,并且正确解决问题。
比如下面是用代码实现中国式排名的例子,同样的数据,生成Python pandas代码的提示词为:
你是pandas专家,文件路径为:D:/Samples/07 数据排名/中国式排名/短跑成绩排名.xlsx。该Excel文件的第一个工作表中A1:B8为给定数据,A-B列分别为“姓名”和“短跑成绩(秒)”数据。用pandas导入Excel文件的数据,第1行为索引行,引擎为"openpyxl",请根据短跑成绩进行排名,用时越少排名越靠前。排名为整数,采用中国式排名,名次相同时取最小名次,数据添加在最后一列。根据排名对行数据进行升序排列。给代码添加注释。
生成VBA代码的提示词为:
你是Excel VBA专家,第一个工作表中A1:B8为给定数据,A-B列分别为“姓名”和“短跑成绩(秒)”数据,第1行为变量名称。遍历第2行到末行,首先按照短跑成绩对各行数据进行升序排列,得到各行对应的序号。排序后的姓名和短跑成绩数据放在第E列和第F列,变量名为“姓名”和“短跑成绩(秒)”,数据从第2行开始往下放。排序后行数据处于第几行序号就是几。比如,假设排序后短跑成绩(10 11 11 12 13 13 13 15)对应的序号为(1 2 3 4 5 6 7 8),对于短跑成绩相同的情况,比如成绩都为11的有两个,它们对应的序号为2和3,采用中国式排名,现在序号都取2,取最小值;成绩都为13的有三个,它们对应的序号为5,6和7,都取最小值5。处理完后,最终序号添加在第G列,变量名为“排名”。给代码添加注释。
为什么会有这么明显的差异呢?
笔者考虑主要有两点原因。
第一个原因是ChatGPT是用Python写的,大量使用了Python深度学习的包,而这些包跟pandas包是一脉相承的;
第二个原因是pandas包已经封装了很多算法,比如本例中的排名算法,pandas包中直接调用rank方法就可解决,而VBA中需要向ChatGPT详细描述算法,相当于写一个中国式排名算法的伪代码。
所以,在VBA和Python之间,我们选择Python。
然后是Python的3个常用包,即pandas, xlwings和OpenPyXL。
工作中常常用pandas包处理数据,用xlwings包和OpenPyXL包做报表,与Excel工作表打交道。
大量实战标明,ChatGPT生成的pandas代码成功率很高,大多数情况下代码不需要修改就可以解决问题。而另外两个包用ChatGPT生成的代码运行时常常出错。
所以,综上,用ChatGPT做数据分析,优先选择Python的pandas包。
Excel内置Python:全面支持pandas包
2023年七夕节这天,微软发布了Excel内置Python Beta测试版。Excel内置Python在微软云上运行,不需要用户在计算机上安装Python和第三方包,从而保证大家都使用相同的软件,没有版本问题。
Excel内置Python可以在Excel中以公式的形式使用Python,并且全面支持pandas包。图4演示了在Excel内置Python中用pandas包实现数据分列的效果,使用很方便。
图4
Excel内置Python
使用ChatGPT生成的pandas代码
图1对应示例用ChatGPT生成的pandas代码完成了数据分析的任务,这里试图将该代码用于Excel内置Python。要将ChatGPT生成的pandas代码用于Excel内置Python,需要将代码适当作一些修改。主要是数据输入和输出部分需要修改。
在图5所示工作表中,在计算机连接互联网的条件下,在E2单元格中输入“=PY(”,进入Python模式,在公式栏输入下面根据ChatGPT生成的代码修改后得到的代码:
df=xl("A1:C26",headers=True)
df.groupby('班级')['成绩'].mean().round(1)
在公式栏中单击Ctrl+Enter键,E2单元格返回一个Series对象,展开该对象,得到各班的平均成绩,如图5所示。
图5
所以, ChatGPT生成的pandas代码稍作修改就可以用于Excel内置Python,解决数据分析问题。
为了让不懂编程的读者也能使用ChatGPT生成代码,轻松实现Excel数据处理自动化,我们基于ChatGPT+Excel+Python超强组合推出了《ChatGPT+pandas数据处理自动化》视频课程!
(点击进入课程,查看详情)
课程一共47期,带领大家用ChatGPT自动生成代码,实现了数据处理自动化的绝大部分内容,包括数据导入和导出、数据整理、数据预处理、数据统计分析、数据可视化和与Excel工作表交互等。
配合实例讲解,即便你是零基础的小白,跟着操作下来也会成为AI时代的数据处理高手!
滴滴!如果你是VBA玩家,不用着急!我们同样制作了《ChatGPT+VBA数据处理自动化》视频课程!领取上面的优惠券,本课程可同享立减100元!
(点击进入课程,查看详情)
最后要强调的是,不管技术如何发展,专业和业务知识始终是根本。对于ChatGPT而言,专业和业务上有深刻认识,思路清晰,才能问出高质量的问题。
希望大家花功夫把基础打好,然后熟练使用ChatGPT等先进技术,如虎添翼。
书课同步 效率翻倍
这里给大家分享一本学习ChatGPT+Excel+Python新知识的好书
《智能分析:ChatGPT+Excel+Python超强组合玩转数据分析》
该书试图让不会编程的你也能借助ChatGPT生成代码,轻松实现Excel数据处理自动化,让你从小白秒变高手;懂编程的你也能收获良多,十倍提升工作效率。
书中用ChatGPT自动生成pandas代码,系统实现了Excel数据处理自动化的绝大部分内容,包括数据导入和导出、数据整理、数据预处理和数据统计分析等。结合xlwings包和OpenPyXL包实现了数据可视化和与Excel工作表交互。
全书对数据分析的知识体系按照面向问题的方式进行了重构,并提供提示词模板120多个。你可以在此基础上建立自己的提示词模板库,并不断丰富。
发布:王一
审核:陈歆懿
如果喜欢本文 欢迎 在看丨留言丨分享至朋友圈 三连 < PAST · 往期回顾 >