用ChatGPT处理word表格数据:直接采用ChatGPt和利用ChatGPT编写python脚本两种方法

摘要

为测试ChatGP在word文档表格的处理能力,本文列举直接使用ChatGPT和利用ChatGPT编写python脚本两种方式,均比较容易的实现了预定目标。文章介绍的利用ChatGPT进行文档处理的方法和思路可以指导大家利用AI工具提升效率。

近期在工作中需要对一些表格数据进行分析处理,并生成统计文档。想到ChatGPT这个生产效率提升工具,想着就试试效果如何。

0. 测试数据生成

工作中的数据涉及很多个人信息,不适合直接进行测试,因此需要生成类似的数据进行调试。
Tips:在使用ChatGPT的过程中一定需要注意个人隐私和数据的保护,你提交的数据会被如何利用目前还不确定,已经和ChatGPT对话的数据泄露的报道,慎重点没有关系。

我把需要处理的表头提供给ChatGPT,让他给我生成随机数据,然后用他生成的数据进行测试。
输入:

按照下的数据格式,自动生成20数据
数据实例表格如下:
| 序号 | 商品     | 发货地点     | 发货时间           | 预计收货时间       | 收货人   | 快递公司 | 快递公司电话 |
| :--: | :------: | :----------: | :-----------------: | :-----------------: | :------: | :------: | :------------: |
|  1   | 苹果     | 河南省郑州市 | 2023-04-20 08:30:00 | 2023-04-22 12:00:00 |  张三  | 顺丰快递 | 10086          |

输出:

| 序号 | 商品   | 发货地点       | 发货时间           | 预计收货时间       | 收货人   | 快递公司   | 快递公司电话 |
| ---- | ---- | -------- | ------------ | ------------ | ------ | ------ | -------- |
| 1    | 牙刷   | 广东省深圳市   | 2023-04-20 10:00:00 | 2023-04-21 18:00:00 | 张三   | 申通快递   | 95543    |
| 2    | 洗发水 | 北京市海淀区   | 2023-04-20 10:30:00 | 2023-04-22 16:00:00 | 李四   | 圆通快递   | 95554    |
| 3    | 衣服   | 上海市浦东新区 | 2023-04-20 11:00:00 | 2023-04-23 14:30:00 | 王五   | 中通快递   | 95555    |
| 4    | 鞋子   | 广东省广州市   | 2023-04-20 12:00:00 | 2023-04-22 15:00:00 | 赵六   | 顺丰快递   | 95338    |
| 5    | 手机   | 河北省石家庄市 | 2023-04-20 13:00:00 | 2023-04-23 10:00:00 | 张三丰 | 韵达快递   | 95546    |
| 6    | 眼镜   | 江苏省南京市   | 2023-04-20 14:30:00 | 2023-04-23 12:00:00 | 李白   | 中通快递   | 95508    |
| 7    | 水杯   | 四川省成都市   | 2023-04-20 15:00:00 | 2023-04-22 17:30:00 | 王实甫 | 顺丰快递   | 95338    |
| 8    | 书包   | 河南省洛阳市   | 2023-04-20 16:00:00 | 2023-04-24 14:00:00 | 吕布   | 圆通快递   | 95554    |
| 9    | 帽子   | 浙江省杭州市   | 2023-04-20 17:30:00 | 2023-04-24 11:30:00 | 张飞   | 韵达快递   | 95546    |
| 10   | 耳机   | 广东省深圳市   | 2023-04-20 18:00:00 | 2023-04-21 21:00:00 | 关羽   | 中通快递   | 95555    |
| 11   | 凉鞋   | 北京市朝阳区   | 2023-04-20 19:30:00 | 2023-04-23 16:30:00 | 赵云   | 申通快递   | 95543    |
| 12   | 腰带   | 上海市长宁区   | 2023-04-20 20:00:00 | 2023-04-24 17:00:00 | 刘备   | 圆通快递   | 95554    |
| 13   | 毛巾   | 广东省广州市   | 2023-04-20 21:00:00 | 2023-04-23 15:00:00 | 孙尚香 | 顺丰快递   | 95338    |
| 14   | 餐具   | 河北省保定市   | 2023-04-20 22:00:00 | 2023-04-25 11:00:00 | 华佗   | 中通快递   | 95508    |
| 15   | 头盔   | 湖北省武汉市   | 2023-04-20 23:00:00 | 2023-04-23 13:30:00 | 典韦   | 申通快递   | 95543    |
| 16   | 手表   | 广东省深圳市   | 2023-04-21 00:30:00 | 2023-04-22 18:00:00 | 马超   | 韵达快递   | 95546    |
| 17   | 手表 | 四川省成都市   | 2023-04-21 01:00:00 | 2023-04-24 16:30:00 | 刘备   | 圆通快递   | 95554    |
| 18   | 游戏手柄 | 上海市浦东新区 | 2023-04-21 02:00:00 | 2023-04-22 21:00:00 | 王昭君 | 中通快递   | 95555    |
| 19   | 牙膏   | 北京市海淀区   | 2023-04-21 03:30:00 | 2023-04-23 12:30:00 | 曹操   | 顺丰快递   | 95338    |
| 20   | 茶杯   | 广东省广州市   | 2023-04-21 04:00:00 | 2023-04-24 10:00:00 | 关羽   | 韵达快递   | 95546    |

输出数据很快,结果也很稳定,城市的省市关系,发货与收货的时间先后顺序,快递名称是常用的快递随机重复出现,人名多是张三李四,上面的例子比较特殊,一堆三国人物,快递电话是错的,但是不影响我后面的数据处理。

1. 直接使用ChatGPT进行处理。

我试图让ChatGPT统计收件人为关羽的快递,输入:

对上面生成的数据进行分析,请完整的统计“收货人”为“关羽”的所有数据,输出格式为:
由关羽的快递有{}件,分别是:
{序号}.{发货地点}寄出的{商品},快递公司为{快递公司},收货人是{收货人},预计达到时间为{预计达到时间}

第一次输出:

收货人为“关羽”的所有数据如下:
由关羽的快递有3件,分别是:
10.广东省深圳市寄出的耳机,快递公司为中通快递,收货人是关羽,预计达到时间为2023-04-21 21:00:00;
20.广东省广州市寄出的茶杯,快递公司为韵达快递,收货人是关羽,预计达到时间为2023-04-24 10:00:00;
17.四川省成都市寄出的手表,快递公司为圆通快递,收货人是关羽,预计达到时间为2023-04-24 16:30:00;

其中一条是错误的,提醒他,输入:

你有一条数据是错误的,有一件物品的收件人并不是关羽

再次输出:

非常抱歉,我犯了一个错误。我查看一下表格,发现其实序号为17的手表的收货人不是关羽,正确的收件人应该是刘备。那么由关羽的快递应该只有2件。非常感谢您的纠正。正确的输出如下:
由关羽的快递有2件,分别是:
10.广东省深圳市寄出的耳机,快递公司为中通快递,收货人是关羽,预计达到时间为2023-04-21 21:00:00;
20.广东省广州市寄出的茶杯,快递公司为韵达快递,收货人是关羽,预计达到时间为2023-04-24 10:00:00;

我测试了很多次,基本上每次都是先错,提醒后一般能改正,但是也有时不能改正,基本上没有办法第一次就得到正确答案,特别是当数据很多的时候,多次提醒也没有办法得到正确的答案,最多的错误是漏统计。因此,个人觉得使用ChatGPT直接进行数据处理可行不高。原因有三:
一是数据保密性问题,很多数据涉及商业秘密和个人隐私;
二是数据量的问题,现在还不能实现将数千行数据通过对话框进行处理。
三是数据处理结果的不确定性,AI模型内部的机理现在还不明确,他的结果随机性问题,特别是当数据量大时,出错的概率显著增加,毕竟数千行的数据不可能进行人工校对。
因此,下面尝试通过让ChatGPT生成一个Python脚本实现我想要的功能。

2 使用ChatGPT生成python脚本进行处理

ChatGPT也能写程序,让他帮忙写一个python的脚本,像这样简单的脚本应该能胜任。
输入:

有如下一个表格,存储在名为“物流信息统计表.docx”的文件中。
| 序号 | 商品   | 发货地点       | 发货时间           | 预计收货时间       | 收货人   | 快递公司   | 快递公司电话 |
| ---- | ---- | -------- | ------------ | ------------ | ------ | ------ | -------- |
| 1    | 牙刷   | 广东省深圳市   | 2023-04-20 10:00:00 | 2023-04-21 18:00:00 | 张三   | 申通快递   | 95543    |
| 2    | 洗发水 | 北京市海淀区   | 2023-04-20 10:30:00 | 2023-04-22 16:00:00 | 李四   | 圆通快递   | 95554    |
| 3    | 衣服   | 上海市浦东新区 | 2023-04-20 11:00:00 | 2023-04-23 14:30:00 | 王五   | 中通快递   | 95555    |
| 4    | 鞋子   | 广东省广州市   | 2023-04-20 12:00:00 | 2023-04-22 15:00:00 | 赵六   | 顺丰快递   | 95338    |
| 5    | 手机   | 河北省石家庄市 | 2023-04-20 13:00:00 | 2023-04-23 10:00:00 | 张三丰 | 韵达快递   | 95546    |

表格的行数不确定,请帮我编写一个python程序,实现以下功能,
完整的统计“收货人”为“关羽”的所有数据,生成以下文字:
由关羽的快递有{}件,分别是:
{序号}.{发货地点}寄出的{商品},快递公司为{快递公司},收货人是{收货人},预计达到时间为{预计达到时间};
并将上述文字保存在“物流信息处理表.docx”中。

第一次输出:

好的,你可以使用Python中的docx库实现这个功能。只需要读取并遍历“物流信息统计表.docx”中的表格数据,找到符合条件的数据进行统计,最后将统计结果保存至“物流信息处理表.docx”文件中即可。

以下是实现该功能的Python代码:

import docx

# 打开物流信息统计表
doc = docx.Document("物流信息统计表.docx")

# 初始化目标数据列表
target_data = []

# 遍历表格数据
for row in doc.tables[0].rows[1:]:
    # 获取每一行的数据
    data = [cell.text for cell in row.cells]

    # 判断是否是关羽的快递
    if data[5] == "关羽":
        target_data.append({
            "序号": data[0],
            "商品": data[1],
            "发货地点": data[2],
            "发货时间": data[3],
            "预计收货时间": data[4],
            "收货人": data[5],
            "快递公司": data[6],
            "快递公司电话": data[7]
        })

# 拼接要保存的文字
text = "由关羽的快递有{}件,分别是:\n".format(len(target_data))
for i, data in enumerate(target_data):
    text += "{}.{}寄出的{},快递公司为{},收货人是{},预计达到时间为{};\n".format(
        data["序号"], data["发货地点"], data["商品"], data["快递公司"], data["收货人"], data["预计收货时间"]
    )

# 保存拼接好的文字到文件中
docx.Document().add_paragraph(text).save("物流信息处理表.docx")

运行以上代码后,程序将会自动读取“物流信息统计表.docx”中的表格数据,并统计“收货人”为“关羽”的所有数据,最后将整理好的文字保存至“物流信息处理表.docx”文件中。

但是,第一次运行时,系统报错,
在这里插入图片描述
输入:

docx.Document().add_paragraph(text).save("物流信息处理表1.docx")
AttributeError: 'Paragraph' object has no attribute 'save'
上面是系统报错,请修改程序

输出:
非常抱歉,是我在代码中疏忽了。正确的保存方式应该是使用doc.save("物流信息处理表.docx"),并且需要在新建文档的时候添加一个段落,然后再将拼接好的文字添加到此段落中,如下所示:

import docx

# 打开物流信息统计表
doc = docx.Document("物流信息统计表.docx")

# 初始化目标数据列表
target_data = []

# 遍历表格数据
for row in doc.tables[0].rows[1:]:
    # 获取每一行的数据
    data = [cell.text for cell in row.cells]

    # 判断是否是关羽的快递
    if data[5] == "关羽":
        target_data.append({
            "序号": data[0],
            "商品": data[1],
            "发货地点": data[2],
            "发货时间": data[3],
            "预计收货时间": data[4],
            "收货人": data[5],
            "快递公司": data[6],
            "快递公司电话": data[7]
        })

# 新建一个文档,添加一个段落
new_doc = docx.Document()
new_doc.add_paragraph()

# 拼接要保存的文字
text = "由关羽的快递有{}件,分别是:\n".format(len(target_data))
for i, data in enumerate(target_data):
    text += "{}.{}寄出的{},快递公司为{},收货人是{},预计达到时间为{};\n".format(
        data["序号"], data["发货地点"], data["商品"], data["快递公司"], data["收货人"], data["预计收货时间"]
    )

# 将拼接好的文字添加到段落中
new_doc.paragraphs[0].add_run(text)

# 保存文档
new_doc.save("物流信息处理表.docx")

运行以上代码后,程序将会自动读取“物流信息统计表.docx”中的表格数据,并统计“收货人”为“关羽”的所有数据,最后将整理好的文字保存至“物流信息处理表.docx”文件中。

输出的结果为:
在这里插入图片描述
并没有数据?突然想起来,“关羽”这个数据前后有多个空格。
输入:

上面的程序并没有输出正确的结果,可能是数据{收货人}前面后都包含空格,需要你删除空格,请重新改上述程序

输出:
正在为您搜索:上面的程序、输出、正确的结果、数据{收货人}

好的,你可以在代码中对“收货人”数据进行strip()操作以删除空格,这样就可以避免由于数据前后有空格导致统计出错的情况。修改后的代码如下:

import docx

# 打开物流信息统计表
doc = docx.Document("物流信息统计表.docx")

# 初始化目标数据列表
target_data = []

# 遍历表格数据
for row in doc.tables[0].rows[1:]:
    # 获取每一行的数据
    data = [cell.text.strip() for cell in row.cells]

    # 判断是否是关羽的快递
    if data[5] == "关羽":
        target_data.append({
            "序号": data[0],
            "商品": data[1],
            "发货地点": data[2],
            "发货时间": data[3],
            "预计收货时间": data[4],
            "收货人": data[5],
            "快递公司": data[6],
            "快递公司电话": data[7]
        })

# 新建一个文档,添加一个段落
new_doc = docx.Document()
new_doc.add_paragraph()

# 拼接要保存的文字
text = "由关羽的快递有{}件,分别是:\n".format(len(target_data))
for i, data in enumerate(target_data):
    text += "{}.{}寄出的{},快递公司为{},收货人是{},预计达到时间为{};\n".format(
        data["序号"], data["发货地点"], data["商品"], data["快递公司"], data["收货人"], data["预计收货时间"]
    )

# 将拼接好的文字添加到段落中
new_doc.paragraphs[0].add_run(text)

# 保存文档
new_doc.save("物流信息处理表.docx")

运行以上代码后,程序将会自动读取“物流信息统计表.docx”中的表格数据,并统计“收货人”为“关羽”的所有数据,最后将整理好的文字保存至“物流信息处理表.docx”文件中。

这次能够输出正确的结果,任务完成。
在这里插入图片描述

3对比分析

本来想让文心一言也完成这个任务,来对比一下的,哎···文心一言、一言难尽啊~~~

4 结束语

这次测试ChatGPT是一个国内的版本,免费,号称是基于ChatGPT3.5版本,就结果来说,已经是很厉害了,因此,学习和使用这样的工具,的确是提升生产效率的工具,未来基于AI的工作模式也一定要学会。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放牛娃的杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值