ChatGPT辅助处理excel表格数据

选择使用方法

  1. 找现成的工具。试了两个,有各种问题。比如比如北大团队出品的ChatExcel等。我的表格列比较多,上传文件后需要砍掉一部分。输入几个命令以后就识别不了了。即使识别到了,输出也受限制,还不如手工处理。另外,我的表格涉及部分财务数据,考虑安全性问题,也不太方便上传到网站。
  2. vba写脚本。我使用的是wps而不是office,默认不支持vba,需要买商业版。遂弃之。
  3. 在对python语法不太熟悉的情况下初步尝试使用ChatGPT3.5(免费版)写python代码,把代码拷贝到visual studio code 中运行。在ChatGPT的帮助下,安装了几个必备的库。但是几轮prompt下来,代码运行还是出现了一些问题。刚开始没有耐心去调试,转而尝试new bing,看下new bing的代码能力。new bing给出的代码如下:
# 读取Excel文件
df = pd.read_excel('未完工项目收款任务记录表.xlsx', sheet_name='物流项目汇总表')# 删除符合条件的数据
df = df.drop(df[(df['总收款额'] == df['总合同结算金额']) & (df['总收款额'].isnull()) & (df['总合同结算金额'].isnull())].index)
df = df.drop(df[(df['总收款额'] == df['总合同结算金额']) & (df['总收款额'].notnull()) & (df['总合同结算金额'].notnull())].index)
df = df.drop(df[(df['项目编号'].isnull()) & (df['PO单号'].isnull())].index)# 新建一个sheet并保存
now = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
writer = pd.ExcelWriter('未完工项目收款任务记录表.xlsx')
df.to_excel(writer, sheet_name='物流项目汇总表' + now, index=False)
writer.save()

好家伙。这个牛。直接把我文档全部清空了。。。

  1. GitHub Copilot 据说是GPT4好用一点,但Mastercard支付被拒(最后在账户中直接增加payment ,在Copilot中选择支付方式,成功开通了Copilot )刚开始还不太会使用,以为就是更加智能的auto completion。后来发现,把注释写完,可以自动出一段代码。Copilot 适合的场景是需求细化到粒度比较小的代码级别。而ChatGPT的prompt,可以是详细的业务级别。

利用python处理excel表格

prompt编写经验

prompt编写的一些原则

prompt 简单的理解它是给 AI 模型的指令。它可以是一个问题、一段文字描述,甚至可以是带有一堆参数的文字描述。AI 模型会基于 prompt 所提供的信息,生成对应的文本,亦或者图片。而 Prompt Engineering (中文意思为提示工程,后缩写为 PE)则是:Prompt Engineering 是一种人工智能(AI)技术,它通过设计和改进 AI 的 prompt 来提高 AI 的表现。Prompt Engineering 的目标是创建高度有效和可控的 AI 系统,使其能够准确、可靠地执行特定任务。因为人类的语言从根本上说是不精确的,目前机器还没法很好地理解人类说的话,所以才会出现 PE 这个技术。另外,受制于目前大语言模型 AI 的实现原理,部分逻辑运算问题,需要额外对 AI 进行提示。

我的prompt进化之路

  • 第一版:
    有一张excel表格,包括2个sheet,请帮我写一段vba代码,删除符合以下条件的记录(行)
  1. 如果某一行的M列的值,等于100%,并且这一行以下的若干行M列为空,删除这一行及以下M列为空的若干行。
  2. 如果某一行的M列的值,等于100%,并且这一行的下一行的M列不为空,直接删除这一行。
  3. 如果某一行的M列的值,小于100%,并且这一行以下的若干行的M列为空,保留这一行及以下M列为空的若干行。
  4. 如果某一行的M列的值,小于100%,并且这一行的下一行M列不为空,保留这一行。
    经过以上调整后,输出为一个新的sheet,命名为:原sheet名称-1
  • 最终版:
    有一张excel表格,未完工项目收款任务记录表.xlsx,其中有一个sheet名称是物流项目汇总表,物流项目汇总表中包括了两个列:“总收款额”与“总合同结算金额”。它们的数据类型是货币。“总收款额”在第10列,“总合同结算金额”在第11列。还包括2个列:“项目编号”与“PO单号”。“项目编号”在第6列,“PO单号”在第7列。另一个sheet名称是物流项目收款信息表,物流项目汇总表中包括了两个列:“总收款额”与“总合同结算金额”。它们的数据类型是货币。“总收款额”在第10列,“总合同结算金额”在第11列。还包括2个列:“项目编号”与“PO单号”。“项目编号”在第6列,“PO单号”在第7列。
    这两张sheet分别需要删除一些数据,被删除的数据满足以下要求:1. 先删除“项目编号”列为空而且“PO单号”为空的行。2. 如果“总收款额”列的值与“总合同结算金额”列的值差值小于1,而且,该行后面的若干行的“总收款额”列为空,“总合同结算金额”列为空,删除这一行及后面若干行。3. 如果“总收款额”列的值与“总合同结算金额”列的值差值小于1,而且,该行后面的一行的“总收款额”列不为空,“总合同结算金额”列不为空,仅删除这一行。
    两张sheet分别删除符合条件的数据后,其他数据保持格式不变,另存为一个excel文件,文件名称是:原文件名称+日期时间,该文件中包括两个sheet,名称分别是物流项目汇总表与物流项目收款信息表。
    请给出完整的python代码
    对比两个版本的prompt:
    1. 交互过程中,也对需求有了更完善的理解。增加了预处理这一步。鉴于我的表格,每一行的数据格式并不一致,而删除并不规范的干扰数据,处理起来更加简洁,对结果也没有任何影响。
    2. 在业务需求的描述方面,增加了很多表格的细节。比如需要处理的单元格数据类型,目标数据的列号。
    3. 其他调整:比如合同结算额与收款额,差值小于某个数值(¥1)比等于更符合实际情况。

代码调试

百分比数据单元格的处理

  1. 第一版的代码
# 读取指定的sheet
df = pd.read_excel(file_name, sheet_name=sheet_name)
new_data = []  # 存储符合条件的行
i = 0  # 当前行索引
while i < len(df):current_percentage = df.loc[i, 'M']next_percentage = df.loc[i+1, 'M'] if i < len(df)-1 else Noneif current_percentage == 1 and pd.isna(next_percentage):  # 条件1while pd.isna(df.loc[i+1, 'M']):

打印输出df.loc[i, ‘M’]的值不对。来回修改几次,还是出错:
在这里插入图片描述
这个问题没有得到很好的解决。我调整了一下,改为比较2个货币类型的单元格数据大小。

for ws in [ws_summary, ws_payment]:rows_to_delete = []  # 存储需要删除的行号print(f"ws: {ws.title}, max_row: {ws.max_row}")for row in range(2, ws.max_row+1):print("ws.cell(row={0}, column=10).value:".format(row), ws.cell(row=row, column=10).value)print("ws.cell(row={0}, column=11).value:".format(row), ws.cell(row=row, column=11).value)if ws.cell(row=row, column=10).value is not None and \ws.cell(row=row, column=11).value is not None and \abs(ws.cell(row=row, column=10).value - ws.cell(row=row, column=11).value) < 1: #收款金额和合同结算金额相等,一定会删除rows_to_delete.append(row)for i in range(1, po_number_max):  # 检查该行后面的若干行是否为空if ws.cell(row=row+i, column=10).value is None and ws.cell(row=row+i, column=11).value is None:             # 后面若干行要删除       rows_to_delete.append(row+i)else:                    break             

while死循环

有一个版本的代码,运行之后,vs code出现无响应,怀疑是出现了死循环。增加打印输出后,果然是这样。说明ChatGPT编写的代码,逻辑漏洞也是有的。
在这里插入图片描述
还比如:
在这里插入图片描述
有时候还有重复性错误:
在这里插入图片描述

excel公式的处理

  1. 单元格包含公式
    尝试了多个封装为函数的方案,将包含公式的单元格转换为数值。
def get_value(cell):if cell.data_type == 'f':compiler = ModelCompiler()new_model = compiler.read_and_parse_archive(filename)evaluator = Evaluator(new_model)value = evaluator.evaluate(cell)return valueelse:return cell.value

最后还是没成功,错误大多是库的问题
在这里插入图片描述
实际上,我的openpyxl是刚安装的。最后还是在网上查到了一个方案。直接读取单元格中的公式计算值。
2. 删除数据后公式的更新
经过处理后输出的sheet的数据是对了,但公式全没有了。数据之间的引用关系消失了。目前这个问题还在研究中。当然,如果出来的中间数据仅做分析使用,只要数据正确,无公式,也勉强可以接受。
增加图形图表方式的数据分析也是我下一步需要完成的工作。
以下代码其实是可以实现公式更新功能的。如果打开文件的方式是data_only=False的话

for ws in [ws_summary, ws_payment]:for row in ws.rows:for cell in row:if cell.data_type == 'f':cell.value = cell.value    

结论

  1. 虽然ChatGPT的帮助确实提高了代码编写的效率,但在整个过程中,我发现ChatGPT给出的一些代码会运行出错,这时需要具有调试Python代码的能力。另外,对于ChatGPT无法解决的问题,可以查阅其他资料进行解决。总之,在这个过程中,对代码的理解和调试能力是必不可少的。
  2. 看过ChatGPT4的介绍,看起来4的代码能力比3.5强,下一步期待解决4的付款问题,尝试一下进一步提高生产力。

参考

  1. Learning Prompt
  2. Python用openpyxl读取单元格中的公式或读取公式计算值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/2630.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

让ChatGPT来制作Excel表格,ChatGPT实现文本和表格的相互转换

Office 三套件可以说是现代办公族必备的办公工具。其中&#xff0c;Excel 因为内置的计算函数、VBA 宏等高级功能又成为了非专业人士最头疼的 Office 组件。非财务专业人士&#xff0c;估计平常会用的 Excel 函数仅限于 SUM(), AVERAGE() 等&#xff0c;甚至这些都是通过界面点…

使用ChatGPT处理Excel表格-终极指南

ChatGPT是由OpenAI开发的人工智能聊天机器人&#xff0c;可用于各种Excel任务&#xff0c;以提高您的办公效率&#xff0c;无论您是会计师、金融分析师、经理、管理员还是其他企业专业人士。 我们将讨论ChatGPT在Excel中可以帮助您的顶级方法。您会惊叹于使用ChatGPT将办公室在…

这么方便吗?用ChatGPT生成Excel(详解步骤)

文章目录 前言使用过 ChatGPT 的人都知道&#xff0c;提示占据非常重要的位置。而 Word&#xff0c;Excel、PPT 这办公三大件中&#xff0c;当属 Excel 最难搞&#xff0c;想要熟练掌握它&#xff0c;需要记住很多公式。但是使用提示就简单多了&#xff0c;和 ChatGPT 聊聊天就…

ChatGPT使用技巧—如何快速制作表格?

一、背景&#xff1a; 在学习或工作中&#xff0c;时常会需要做一些表格进行数据统计、分析&#xff0c;通常我们会用word或者excel做出表格&#xff0c;然后把数据一个个复制进去&#xff0c;非常慢&#xff0c;用了ChatGPT之后&#xff0c;你会发现工作会变得如此简单…

使用ChatGPT做简单Excel表格及数据分析

解锁 ChatGPT 表格能力 如果我们想用ChatGPT做一些简单的表格 或者想让他具备编辑分析能力 只需要在提问的时候告诉 ChatGPT&#xff1a;请以表格的形式展示回复的内容 这么说... 可能有点抽象 下面我们就用一个完整的例子展开学习一下 举例 假如我们拿到了下面这组数据 希望…

Chatgpt使用技巧(一):Chatgpt处理python+excel+tableau的技巧。

#分享一个使用chatgpt处理pythonexceltableau的技巧。 首先需要一个chatgpt的账号&#xff0c;如果没有的话可以在csdn中使用。 其次&#xff08;图一&#xff09;中是我建的excel样本。 我通过询问&#xff08;图二&#xff09;chatgpt获取python跑取excel的代码。 然后绘制…

chatGPT是什么?最新需要了解的都在这

ChatGPT是什么&#xff1f; ChatGPT是一种基于人工智能的聊天机器人。它能够使用自然语言处理技术&#xff0c;与人类进行交互&#xff0c;并回答各种问题或提供帮助。ChatGPT的目的是为了让用户更容易地获取所需信息&#xff0c;并进行沟通。 ChatGPT是一款基于人工智能技术的…

ChatGPT更新说明(20230524)

原文传送门&#xff1a;ChatGPT — Release Notes 更新说明&#xff08;5月24日&#xff09; 简要&#xff1a;iOS应用在更多国家可用&#xff0c;Alpha测试中的共享链接&#xff0c;Bing插件&#xff0c;iOS上的历史记录禁用 ChatGPT iOS应用在更多国家可用 好消息&#xf…

突发!ChatGPT!王炸级更新!!!

ChatGPT宣布推出插件功能&#xff0c;赋予ChatGPT使用工具、联网、运行计算的能力。 有多牛逼&#xff0c;举例来说&#xff0c;之前的 ChatGPT 如果相当于 iPhone手机的话&#xff0c;现在的插件就相当于苹果的 App Store。 直接解决了ChatGPT原有不能联网的问题&#xff0c;原…

[技术杂谈][chatgpt]chatgpt相关开源代码地址汇总

1、有预训练模型且可以训练自己的数据集&#xff1a; OpenChatKit&#xff1a; GitHub - togethercomputer/OpenChatKitContribute to togethercomputer/OpenChatKit development by creating an account on GitHub.https://github.com/togethercomputer/OpenChatKit dolly:…

iOS版ChatGPT初体验,还支持语音输入 !

北京时间5月19日凌晨&#xff0c;OpenAI官方推出了iOS版ChatGPT。 据介绍&#xff0c;iOS版ChatGPT供用户免费使用&#xff0c;并在不同设备&#xff08;移动端和网页端&#xff09;上同步聊天历史。同时&#xff0c;它还集成了开源语音识别系统Whisper&#xff0c;可以实现语音…

ChatGPT迎来史诗级iPhone时刻!IOS版ChatGPT首发体验!免费、响应快、新增语音识别

OpenAI昨晚正式发布了ChatGPT的iOS版App&#xff0c;官方版ChatGPT正式杀入移动手机端&#xff08;各类山寨App恐将失业[dog]&#xff09;。 现在你已经可以在App Store中下载该应用了&#xff0c;这款App的名称为“OpenAI ChatGPT”。 我第一时间也下载体验了&#xff0c;让…

苹果版的ChatGPT官方Siri助手来了,立马体验

ChatGPT官方的苹果APP已经来了&#xff0c;下面分享13个苹果Siri的ChatGPT智能助手&#xff0c;打开即可使用&#xff0c;无需魔法、无需下载APP&#xff1b; 引言&#xff1a; ChatGPT结合Siri语音助手&#xff0c;已成为智慧生活的引领者。ChatGPT作为一款先进的自然语言处理…

idea插件——chatgpt

有免费使用&#xff0c;但还是收费&#xff1a;

了解Chatgpt key token计价或扣费说明

了解Chatgpt key及token计费方式 Token及费用说明 token 与 文字 的换算 OpenAI的定价是基于token的&#xff0c;对于英文文本&#xff0c;1个token大约是4个字符或0.75个单词。通常1000个Token约等于750个英文单词或者400&#xff5e;500个汉字。 花费 1000个token的价格…

2023ChatGPT聊天机器人无限问答原版

ChatGPT聊天机器人可以用于提供无限问答功能。以下是可能的实现步骤&#xff1a; 确定需求&#xff1a;定义需要实现的无限问答功能&#xff0c;例如对话场景、支持的主题和领域等。 数据采集和预处理&#xff1a;准备大量的包含有关所需主题和领域的文本数据&#xff…

Python写一个角色扮演带上下文功能的chatgpt聊天机器人

大家都在网页上玩ChatGPT玩的不亦乐乎&#xff0c;但是很多时候我们需要打造个人专属的GPT&#xff0c;比如我是律师&#xff0c;我是医生&#xff0c;我是营养师&#xff0c;我是财会&#xff0c;我是猎头&#xff0c;我需要专属的某个领域的GPT&#xff0c;其实也不难。 今天…

ChatGPT聊天机器人应用开发流程分享

ChatGPT聊天机器人应用开发流程分享 文章目录 ChatGPT聊天机器人应用开发流程分享概述什么是ChatGPT对话机器人应用开发ChatGPT对话机器人应用需要具备什么技能 ChatGPT对话机器人应用开发流程设计与规划确应用的目的与功能确定应用的用户画像 实现前端开发选择开发平台界面UI设…

10分钟!Python写一个角色扮演带上下文功能的chatgpt聊天机器人!上篇!

大家都在网页上玩ChatGPT玩的不亦乐乎&#xff0c;但是很多时候我们需要打造个人专属的GPT&#xff0c;比如我是律师&#xff0c;我是医生&#xff0c;我是营养师&#xff0c;我是财会&#xff0c;我是猎头&#xff0c;我需要专属的某个领域的GPT&#xff0c;其实也不难。 今天…

全开源ChatGPT聊天机器人商业版源码/支持魔改/完全开放源代码

&#x1f388; 限时活动领体验会员&#xff1a;可下载程序网创项目短视频素材 &#x1f388; ☑️ 品牌&#xff1a;ChatGPT ☑️ 语言&#xff1a;PHP ☑️ 类型&#xff1a;ChatGPT ☑️ 支持&#xff1a;PCWAP &#x1f389; 有需要的朋友记得关赞评&#xff0c;需要的底部获…