用chatgpt接入excel 分析数据 ChatGPT辅助处理excel表格数据

AI资讯1年前 (2023)发布 fengdao
24 0

选择使用方法 找现成的工具。试了两个,有各种问题。比如比如北大团队出品的等。我的表格列比较多,上传文件后需要砍掉一部分。输入几个命令以后就识别不了了。即使识别到了,输出也受限制,还不如手工处理。另外,我的表格涉及部分财务数据,考虑安全性问题,也不太方便上传到网站。vba写脚本。我使用的是wps而不是,默认不支持vba,需要买商业版。遂弃之。在对语法不太熟悉的情况下初步尝试使用.5(免费版)写代码,把代码拷贝到 code 中运行。在的帮助下,安装了几个必备的库。但是几轮下来,代码运行还是出现了一些问题。刚开始没有耐心去调试,转而尝试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()

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

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

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

我的进化之路 如果某一行的M列的值,等于100%,并且这一行以下的若干行M列为空,删除这一行及以下M列为空的若干行。如果某一行的M列的值,等于100%,并且这一行的下一行的M列不为空,直接删除这一行。如果某一行的M列的值,小于100%,并且这一行以下的若干行的M列为空,保留这一行及以下M列为空的若干行。如果某一行的M列的值,小于100%,并且这一行的下一行M列不为空,保留这一行。

经过以上调整后,输出为一个新的sheet,命名为:原sheet名称-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 None
    if current_percentage == 1 and pd.isna(next_percentage):  # 条件1
        while pd.isna(df.loc[i+1, 'M']):

打印输出df.loc[i, ‘M’]的值不对。来回修改几次,还是出错:

用chatgpt接入excel 分析数据_用chatgpt接入excel 分析数据_用chatgpt接入excel 分析数据

这个问题没有得到很好的解决。我调整了一下,改为比较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出现无响应,怀疑是出现了死循环。增加打印输出后,果然是这样。说明编写的代码,逻辑漏洞也是有的。

还比如:

有时候还有重复性错误:

excel公式的处理 单元格包含公式

用chatgpt接入excel 分析数据_用chatgpt接入excel 分析数据_用chatgpt接入excel 分析数据

尝试了多个封装为函数的方案,将包含公式的单元格转换为数值。

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 value
    else:
        return cell.value

最后还是没成功,错误大多是库的问题

实际上,我的是刚安装的。最后还是在网上查到了一个方案。直接读取单元格中的公式计算值。

2. 删除数据后公式的更新

经过处理后输出的sheet的数据是对了,但公式全没有了。数据之间的引用关系消失了。目前这个问题还在研究中。当然,如果出来的中间数据仅做分析使用,只要数据正确,无公式,也勉强可以接受。

增加图形图表方式的数据分析也是我下一步需要完成的工作。

以下代码其实是可以实现公式更新功能的。如果打开文件的方式是=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    

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

© 版权声明

相关文章

暂无评论

暂无评论...