前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >盘点一个使用ChatGPT实现Python自动化办公的需求(上篇)

盘点一个使用ChatGPT实现Python自动化办公的需求(上篇)

作者头像
前端皮皮
发布2023-08-17 09:30:17
2980
发布2023-08-17 09:30:17
举报
文章被收录于专栏:前端进阶学习交流

大家好,我是皮皮。

一、前言

这个事情还得从前几天在Python白银群【大侠】问了一个Python自动化办公处理的问题,需求倒是不难,但是他要求ChatGPT帮他处理出来,并且要达到他预期的效果。前期ChatGPT办事不利,被【大侠】一顿狂喷。

言归正传,一起来看看他的需求吧。想要ChatGPT正确干活,必要要把他调教好,不然他就疯言疯语了。

我有文件名为rq_lst,其中存有记录一些日期的一个list ,日期是从小到大排列,但不连续;同一文件夹下,存有文件名以rq_lst中日期开头的一些xlsx数据文件,xlsx数据文件结构相同,其中第一列表头为“股票代码”。我想用python编程,任给rq_lst中一个日期rq_0,统计十日(该日及表中所含前九日)内“股票代码”重复出现的次数。

这个需求,正常人理解起来可能都有点费劲,更何况ChatGPT了。

二、实现过程

下图是他的原始文件,文件名,只是以日期开头,但还有其它字符,这就需要继续给它提供补充信息了。

后来【栖迟-3768】使用ChatGPT3.5得到了一个答案,代码如下:

代码语言:javascript
复制
import os
import pandas as pd

# 获取文件夹中的所有文件
file_list = os.listdir("rq_lst")

# 读取rq_lst文件
with open("rq_lst/rq_lst.txt", "r") as file:
    dates = file.readlines()
    dates = [date.strip() for date in dates]

# 任给的日期
rq_0 = "2023年03月14日"  # 替换为你想要的日期

# 确定需要统计的日期范围
rq_index = dates.index(rq_0)
start_index = max(0, rq_index - 9)
dates_to_process = dates[start_index:rq_index+1]

# 统计股票代码重复出现次数的字典
stock_counts = {}

# 遍历日期范围内的文件
for date in dates_to_process:
    file_prefix = date.replace("年", "").replace("月", "").replace("日", "")
    file_name = [file for file in file_list if file.startswith(file_prefix)]
    
    if len(file_name) > 0:
        file_path = os.path.join("rq_lst", file_name[0])
        
        # 读取xlsx文件中的数据
        data = pd.read_excel(file_path)
        
        # 统计股票代码重复出现次数
        stock_counts[date] = data['股票代码'].duplicated().sum()

# 输出结果
for date, count in stock_counts.items():
    print(f"日期:{date},重复次数:{count}")

运行之后,比粉丝原来的答案要强一些,但是还是有点小问题,需要继续调教。

后来【论草莓如何成为冻干莓】给了一个答案,下面是他调教ChatGPT的过程:

这么问就更加清晰了,ChatGPT也知道你要干啥了,并且给出了如下代码:

代码语言:javascript
复制
import os
import pandas as pd

# 获取当前文件夹中符合命名规则的文件
files = [f for f in os.listdir('.') if os.path.isfile(f) and f.endswith('.xlsx')]

# 解析文件名中的日期,并找到最小的日期作为起始日期
dates = [pd.to_datetime(f.split('.')[0], format='%Y年%m月%d日') for f in files]
start_date = min(dates).date()

# 存储股票代码和对应的重复次数
stock_code_counts = {}

# 确定前十日日期范围
date_range = pd.date_range(end=start_date, periods=10)

# 遍历日期范围
for date in date_range:
    # 根据日期构造文件名
    filename = date.strftime('%Y年%m月%d日.xlsx')
    
    # 检查文件是否存在
    if filename in files:
        # 读取Excel文件
        df = pd.read_excel(filename)
        # 提取股票代码列
        stock_codes = df.iloc[:, 0]
        # 统计重复次数
        code_counts = stock_codes.value_counts()
        
        # 更新股票代码和重复次数的字典
        for code, count in code_counts.items():
            stock_code_counts[code] = stock_code_counts.get(code, 0) + count

# 输出结果
for code, count in stock_code_counts.items():
    print(f'股票代码 {code} 出现的重复次数:{count}')

把文件名称补齐为粉丝自己的文件夹中的名字,应该是可行的。

后面他还提供了另外一个处理方法,程序更加的健壮了,下一篇文章分享给大家。

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Python自动化办公处理的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【大侠】提问,感谢【栖迟-3768】、【论草莓如何成为冻干莓】、【瑜亮老师】给出的思路和代码解析,感谢【Ineverleft】等人参与学习交流。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python共享之家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、实现过程
  • 三、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档