回复“书籍”即可获赠Python从入门到进阶共10本电子书
大家好,我是皮皮。
前几天在Python最强王者交流群【东哥】问了一个Python自动化办公的问题。问题如下所示:大佬们,请教一个Python自动化办公问题,我有7个这样的民主评议表格,现在想通过Python批量的计算每个人最后的平均总分,应该怎么处理呢?
这个需求还挺有意思的,支部肯定每年都要开一次这样的会议,然后每次都需要专人来进行统计,如果挨个的对打开表格,然后复制、粘贴,汇总到统一的一个表格里边,这个方法未尝不可,但是这个方法就是有点费时费力了,而且非常繁琐。有时候,你可能因为人数太多,或者表格太多,复制的时候,少复制了,或者重复复制了,导致之前的数据有得重新删除,重新来一遍,这个就非常恼火了。这里给大家安利下Python自动化办公,助力你的统计。
这里【瑜亮老师】给了一个指导:批量读取7个表格,每个表格跳过前4行,读取后删除有null值的行,合并7个df,分组聚合取平均值,因为只要每个人的结果,因此不适合用transform。
import pandas as pd
import pathlib
# 获取文件夹中每个Excel文件的路径
folder = r"C:\Users\Desktop\民主评议表"
excel_files = pathlib.Path(folder).glob('*.xls')
header = ['姓名', '以学铸魂', '以学增智', '以学正风', '以学促干']
data = []
for i in excel_files:
# 读取Excel文件,并跳过前4行,使用前5列数据
df = pd.read_excel(i, skiprows=4, header=None, index_col=0, usecols="A:F")
df.dropna(inplace=True)
df.columns = header
df['总分'] = df[header[1:]].sum(axis=1)
df['平均分'] = df[header[1:]].mean(axis=1)*4
data.append(df)
# 纵向拼接data中的df数据
df = pd.concat(data, axis=0).reset_index(drop=True)
# 按照'姓名'列进行分组,并计算每个姓名的总分和平均分
# result = df.groupby('姓名').agg({'总分': 'sum', '平均分': 'mean'}).reset_index().sort_values(by="平均分", ascending=False)
result = df.groupby('姓名', as_index=False).agg(总分=('总分', 'sum'), 平均分=('总分', 'mean')).sort_values(by='平均分', ascending=False)
# result = df.groupby('姓名', as_index=False).agg(总分=('总分', 'sum'), 平均分=('总分', 'mean'))
print(result)
# 将结果保存到新的Excel文件中
# result.to_excel('output.xlsx', index=True)
代码运行之后,可以得到预期的结果,顺利地解决了粉丝的问题。
粉丝自己手动也计算出来了,结果和程序跑出来的吻合!
如果你也有类似这种Python相关的小问题,欢迎随时来交流群学习交流哦,有问必答!

大家好,我是皮皮。这篇文章主要盘点了一个Python自动化办公的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。
最后感谢粉丝【东哥】提出的问题,感谢【FiNε_】、【瑜亮老师】给出的思路,感谢【莫生气】等人参与学习交流。
【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。
大家在学习过程中如果有遇到问题,欢迎随时联系我解决(Python进阶者微信:2584914241),应粉丝要求,我创建了一些ChatGPT机器人交流群和高质量的Python付费学习交流群和付费接单群,欢迎大家加入我的Python学习交流群和接单群!
小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

------------------- End -------------------
往期精彩文章推荐:

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
/今日留言主题/
随便说一两句吧~~
原文作者:Python爬虫与数据挖掘;如有侵权,请联系管理员删除。