当前位置: 首页 > news >正文

借助ChatGPT使用Pandas实现Excel数据汇总

一、问题的提出

现在有如下一个Excel表:

上述Excel表中8万多条数据,记录的都是三年以来花菜类的销量,现在要求按月汇总实现统计每个月花菜类的销量总和,如果使用Python的话要给出代码。

二、问题的解决

1.首先可以用透视表的方法解决这个问题,可能相对简单一些。采用透视表的话,我们根据ChatGPT的回答,可以采用下面的方法:

2. 然后就是采用python中的pandas来解决。这里面涉及到Excel表的读取、清洗、汇总、统计,再写入到Excel表。过分析,借助于ChatGPT我写了以下代码。如果要想使生成的代码更加准确,可以把部分Excel表的内容复制给ChatGPT对话框里,然后让它学习,并根据我们给出的指令写出Python代码就可以。

有时,ChatGPT给出代码可能无法运行,而且报错的可能性很大,这时,我们就把bug信息再回复给它,甚至一句话都不要说,它给你寻找解决办法,并且把最后的修改代码返回来。

多数情况下的问题原因是我们的描述不够清楚,造成ChatGPT在理解上有误。这时还要继续追问,对代码继续进行修正。比如我第一次提问时,让它汇总月度总销量,但是后来发现客户要求的是汇总三年中每一个月份的销量,这就要对它进一步提问,让它对已经生成的代码进行修改:

三、代码展示

最终,我经过调试、修改、增添写入Excel表的功能,最终形成以下带有注释的代码。

import pandas as pd
#读取Excel,以第三行为标题
df = pd.read_excel("花菜类.xlsx",header=2)#找到不规则日期所在行
irregular_date_rows = df[~df['销售日期'].str.match('\d{4}-\d{2}-\d{2}', na=True)]#print("不规则日期所在行:",irregular_date_rows)# 删除不规则日期的行
df = df.drop(irregular_date_rows.index)# 转化日期格式
df['销售日期'] = pd.to_datetime(df['销售日期'])# 创建一个新列 '销售月份',用于存储销售日期的月份信息
df['销售月份'] = df['销售日期'].dt.month
df['销售年份'] = df['销售日期'].dt.year#使用 groupby 和 sum 计算每个月的销售量总和
#monthly_sales = df.groupby('销售月份')['求和项:销量(千克)'].sum()#使用 groupby 和 sum 计算每年每个月的销售量总和
monthly_sales = df.groupby(['销售年份', '销售月份'])['求和项:销量(千克)'].sum()# 打印结果 monthly_sales
monthly_sales.to_excel("求和项.xlsx")

下面是统计后的结果:

四、学后反思

1. ChatGPT解决Excel问题可以直接贴表格,给的代码不一定能用,关键是提问时表述一定要问清楚。如果报错,就让它继续排bug,如果要修改就可以利用它的上下文功能继续给它指令,让它添加功能。

2. Python和ChatGPT为解决现实的统计问题提供了多元的方法,比如这个8万多条记录如果用Python可能不到十秒就解决了所有的问题,非常的快捷和方便。

http://www.lryc.cn/news/164137.html

相关文章:

  • [学习笔记]PageRank算法
  • 【洛谷算法题】P5704-字母转换【入门1顺序结构】
  • Pytorch——查找、替换module相关操作
  • 组件安全以及漏洞复现
  • 人工智能安全-4-小样本问题
  • iOS 17中的Safari配置文件改变了游戏规则,那么如何设置呢
  • AC自动机小结
  • 【C++】构造函数分类 ③ ( 调用有参构造函数的方法 | 括号法 | 等号法 )
  • uni-app 之 uni.request 网络请求API接口
  • 代码随想录33|509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯, 34. 在排序数组中查找元素的第一个和最后一个位置
  • 什么是Executors框架?
  • 【kafka】kafka单节点/集群搭建
  • 如何进行机器学习
  • Vue项目使用axios配置请求拦截和响应拦截以及判断请求超时处理提示
  • 《DevOps实践指南》- 读书笔记(四)
  • 盲打键盘的正确指法指南
  • 【MySQL】索引 详解
  • 怎么通过ip地址连接共享打印机
  • 迅为i.MX8mm小尺寸商业级/工业级核心板
  • vue中v-for循环数组使用方法中splice删除数组元素(错误:每次都删掉点击的下面的一项)
  • Python用GAN生成对抗性神经网络判别模型拟合多维数组、分类识别手写数字图像可视化...
  • 嵌入式Linux驱动开发(LCD屏幕专题)(一)
  • uniapp搜索功能
  • iframe 实现跨域,两页面之间的通信
  • DevOps到底是什么意思?
  • 03JVM_类加载
  • Mysql如何对null进行排序(mysql中null排序)
  • 【基础计算机网络1】认识计算机网络体系结构,了解计算机网络的大致模型(下)
  • vscode 画流程图
  • uniapp-一些实用的api接口