Python实战:Excel批量处理:自动合并、清洗、统计全搞定
- 2026-11-09 15:13:04
Python实战:Excel批量处理:自动合并、清洗、统计全搞定

月底赶报表的小伙伴举个手🙋
十几份部门数据要合并,空格、乱码、重复行要挨个清理,算完汇总还要做透视表,熬到深夜还容易出错。
今天就教你用Python自动化搞定全流程,看完就能直接用。
🔧 一、准备工作
只需要安装两个第三方库,一行命令就能搞定:
pip install pandas openpyxl 其中 pandas 负责数据处理,openpyxl 负责读写Excel文件,兼容xlsx/xlsm/xltx/xltm全格式。
💡 提示:如果是旧版xls格式,额外安装xlrd即可:pip install xlrd==1.2.0
📝 二、三步实现全流程自动化
✅ 第一步:批量合并同文件夹下所有Excel
首先把所有待处理的Excel放到同一个文件夹,代码会自动识别并合并所有Sheet:
import osimport pandas as pdexcel_dir = "./报表数据/"data_list = []# 先判断文件夹是否存在,避免报错if not os.path.exists(excel_dir):raise FileNotFoundError(f"目录不存在:{excel_dir}")# 遍历目录文件for filename in os.listdir(excel_dir):if filename.lower().endswith((".xlsx", ".xls")):file_path = os.path.join(excel_dir, filename)sheets = pd.read_excel(file_path, sheet_name=None)data_list.extend(sheets.values())# 防止无Excel文件时报concat空列表错误if data_list:total_df = pd.concat(data_list, ignore_index=True)else:raise ValueError("指定目录下未找到任何Excel文件")
几十份文件几秒钟就合并完,完全不用手动复制。
✅ 第二步:一键清洗脏数据
最头疼的去重、补空、格式修正,几行代码就能搞定:
# 1. 删除完全重复的行total_df = total_df.drop_duplicates()# 2. 数值列空值填充为0,文本列空值填充为"未填写"num_cols = ["销售额", "成本", "利润"]text_cols = ["部门", "负责人", "区域"]total_df[num_cols] = total_df[num_cols].fillna(0)total_df[text_cols] = total_df[text_cols].fillna("未填写")# 3. 去除文本前后空格total_df[text_cols] = total_df[text_cols].apply(lambda x: x.str.strip())
还可以根据自己的业务需求,加自定义过滤规则,比如删除异常值、统一日期格式等等。
✅ 第三步:自动统计生成结果
按维度汇总数据,直接生成透视表输出到新Excel:
以下代码主要含义:先按「部门 + 区域」分组,分别统计每组的销售总额、平均利润、订单笔数,生成一张汇总表,导出到 Excel 文件并打印完成提示。
# 按部门+区域统计汇总result = total_df.groupby(["部门", "区域"]).agg(总销售额=("销售额", "sum"),平均利润=("利润", "mean"),订单数量=("订单号", "count") ).reset_index()# 导出结果到Excelresult.to_excel("./汇总结果.xlsx", index=False)print("处理完成!结果已保存到汇总结果.xlsx")
打开导出的文件就是整理好的最终报表,直接可以用。
📌 常见问题解决
如果Excel有合并单元格:读取时加参数 pd.read_excel(..., keep_default_na=False)再单独处理处理超大文件:加 chunksize=10000分块读取,避免内存不足需要生成带格式的报表:搭配 openpyxl可以自定义单元格颜色、字体、边框
今天的代码大家可以直接复制,把列名换成自己的就能运行。
如果你有其他想实现的自动化场景,欢迎在评论区留言~
觉得有用的话点个赞和在看,下次给大家继续分享相关知识。

本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。