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

第五天 用Python批量处理Excel文件,实现自动化办公

用Python批量处理Excel文件,实现自动化办公

一、具体需求

有以下N个表,每个表的结构一样,如下:

需要把所有表数据汇总,把每个人的得分、积分分别加起来,然后按总积分排名,总积分一致时,名次一致且非连续排序;积分一致的前提下,按总得分降序展示,但不改变排名,结果如下:

二、Python开发

1、导入所需的包

import pandas as pdimport glob

2、获取所有Excel文件的文件路径

excel_files = glob.glob("./样例数据/*.xlsx")

3、将各表数据合并到主DataFrame

# 初始化一个空DataFramemerged_df = pd.DataFrame()
# 循环读取每个Excel文件并合并到DataFramefor file in excel_files:    df = pd.read_excel(file, header=1)  # 读取Excel文件,跳过第一行数据    merged_df = merged_df._append(df, ignore_index=True)  # 合并到主DataFrame

4、计算总积分和总排名

merged_df['总得分'] = merged_df.groupby('姓名')['月度得分'].transform('sum')  # 计算得分总和merged_df['总积分'] = merged_df.groupby('姓名')['积分'].transform('sum')  # 计算积分总和merged_df.drop_duplicates(subset=['姓名', '总积分'], keep='first', inplace=True)  # 去重

5、以总积分排名

merged_df['总排名'] = merged_df['总积分'].rank(ascending=False, method='min')

6、按总积分列的值进行排序,重置索引

merged_df = merged_df.sort_values(by=['总积分','总得分'], ascending=[False,False]).reset_index(drop=True)

7、获取需要输出的结果​​​​​​​

result_df = pd.DataFrame()result_df = merged_df.loc[:, ['姓名','总得分','总积分','总排名']].copy()

8、将合并后的DataFrame输出到一个新Excel文件

result_df.to_excel("总积分及排名.xlsx", index=False)

汇总代码展示如下

import pandas as pdimport globexcel_files = glob.glob("./样例数据/*.xlsx")# 初始化一个空DataFrame
merged_df = pd.DataFrame()# 循环读取每个Excel文件并合并到DataFrame  append() 方法在DataFrame的末尾添加一行或一列数据 新版本修改为 _append()
for file in excel_files:df = pd.read_excel(file, header=1)  # 读取Excel文件,跳过第一行数据merged_df = merged_df._append(df, ignore_index=True)  # 合并到主DataFramemerged_df['总得分'] = merged_df.groupby('姓名')['月度得分'].transform('sum')  # 计算得分总和
merged_df['总积分'] = merged_df.groupby('姓名')['积分'].transform('sum')  # 计算积分总和
merged_df.drop_duplicates(subset=['姓名', '总积分'], keep='first', inplace=True)  # 去重merged_df['总排名'] = merged_df['总积分'].rank(ascending=False, method='min')merged_df = merged_df.sort_values(by=['总积分','总得分'], ascending=[False,False]).reset_index(drop=True)result_df = pd.DataFrame()
result_df = merged_df.loc[:, ['姓名','总得分','总积分','总排名']].copy()result_df.to_excel('./样例数据/总排名.xlsx', index=False)

 

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

相关文章:

  • mybatis整合(手动添加jar包方式)
  • leetcode - 矩阵区域和
  • 头歌JUnit单元测试相关实验进阶
  • 【kafka实践】11|消费位移提交
  • Mac卸载、安装Python
  • 算法——滑动窗口
  • 带头双向循环链表:一种高效的数据结构
  • C++基础 -34- 输入输出运算符重载
  • MimicGen论文分析与资料汇总
  • JAVA-每一页PDF转图片
  • VS安装QT VS Tools编译无法通过
  • 【C语言之 CJson】学CJson看这一篇就够了
  • 使用Java语言实现字母之间的大小写转换
  • Docker的数据持久化;Docker网络;Dockerfile编写
  • OpenHarmony亮相MTSC 2023 | 质量效率共进,赋能应用生态发展
  • windows11 调整鼠标灵敏度方法
  • 贪心算法个人见解
  • Win中Redis部署与配置
  • vue el-button 封装及使用
  • QT之QMediaPlayer的用法
  • TCP_报文格式解读
  • C语言面试之旅:掌握基础,探索深度(面试实战之c语言关键词下篇)
  • Java学习第十三天
  • 【Delphi】实现彩色日志显示框(TRichEdit Helper)
  • Elasticsearch 优化查询中获取字段内容的方式,性能提升5倍!
  • 图像批量设计软件Retrobatch Pro mac中文版功能特色
  • python第3天之函数
  • SQL Server 数据库,为products表添加数据
  • C语言结构体详解(二)(能看懂文字就能明白系列)文章很长,慢慢品尝
  • WPF不使用AllowsTransparency实现高性能透明背景异形窗体