查看: 121|回复: 3

Python pandas批量处理Excel文件:7个常用场景代码实战

[复制链接]
发表于 1 小时前 | 显示全部楼层 |阅读模式
在日常办公和数据分析工作中,Excel 文件的读取、清洗、分组统计和合并是最高频的需求。Python 的 pandas 库提供了简洁高效的接口,能将这些操作自动化。本文整理 7 个最实用的 Excel 处理场景,每个场景都附带可直接粘贴运行的代码,帮你快速上手。

一、读取 Excel 文件
pandas 用 read_excel 函数读取 Excel,支持指定 sheet、读取行数以及设置索引列。
  1. import pandas as pd
  2. # 读取全部 sheet
  3. df = pd.read_excel("数据.xlsx")
  4. # 读取指定 sheet
  5. df = pd.read_excel("数据.xlsx", sheet_name="Sheet1")
  6. # 仅读取前5行
  7. df = pd.read_excel("数据.xlsx", nrows=5)
  8. # 将“编号”列设为行索引
  9. df = pd.read_excel("数据.xlsx", index_col="编号")
复制代码

二、快速查看数据概况
拿到 DataFrame 后,用 head、info 和 describe 初步了解数据结构和统计特征。
  1. # 查看前5行(默认)
  2. print(df.head())
  3. # 查看列名、数据类型及非空数量
  4. print(df.info())
  5. # 查看数值型列的统计摘要:均值、标准差、四分位数等
  6. print(df.describe())
  7. # 查看所有列名列表
  8. print(df.columns.tolist())
复制代码

三、数据筛选
pandas 支持布尔索引和多条件组合筛选,语法直观。
  1. # 筛选城市等于“北京”的行
  2. df[df["城市"] == "北京"]
  3. # 多条件:北京且销售额大于10000(& 表示与,| 表示或)
  4. df[(df["城市"] == "北京") & (df["销售额"] > 10000)]
  5. # 按值列表筛选,比如指定多个姓名
  6. df[df["姓名"].isin(["张三", "李四"])]
复制代码

四、数据分组统计
groupby 配合聚合函数可快速完成分组统计,也支持多个统计指标同时计算。
  1. # 按城市分组,求销售额总和
  2. df.groupby("城市")["销售额"].sum()
  3. # 分组后同时求总和、均值、计数
  4. df.groupby("城市")["销售额"].agg(["sum", "mean", "count"])
  5. # 将分组结果保存为多个 sheet(每个城市一个 sheet)
  6. with pd.ExcelWriter("分组结果.xlsx") as writer:
  7.     for city, group in df.groupby("城市"):
  8.         group.to_excel(writer, sheet_name=city, index=False)
复制代码

五、合并多个 Excel 文件
当多个结构相同的 Excel 文件分散在同一文件夹时,可批量读取并合并为一个 DataFrame。
  1. import os
  2. path = "销售数据"
  3. all_data = []
  4. for f in os.listdir(path):
  5.     if f.endswith(".xlsx"):
  6.         df = pd.read_excel(os.path.join(path, f))
  7.         all_data.append(df)
  8. result = pd.concat(all_data, ignore_index=True)
  9. result.to_excel("合并结果.xlsx", index=False)
  10. print(f"合并完成,共{len(result)}行")
复制代码

六、数据清洗(空值、重复值、替换、列名修改)
数据清洗是分析前的必要步骤,pandas 提供了 dropna、fillna、drop_duplicates、replace 和 rename 方法。
  1. # 删除包含空值的行
  2. df.dropna(inplace=True)
  3. # 用0填充空值
  4. df.fillna(0, inplace=True)
  5. # 用上一个有效值填充(向前填充)
  6. df.fillna(method="ffill", inplace=True)
  7. # 删除重复行
  8. df.drop_duplicates(inplace=True)
  9. # 替换指定值
  10. df.replace("旧值", "新值", inplace=True)
  11. # 修改列名
  12. df.rename(columns={"旧名": "新名"}, inplace=True)
复制代码

七、保存 Excel 文件
将处理后的 DataFrame 导出是最终环节,支持单 sheet 或多 sheet 写入。
  1. # 保存为单个 Excel,不包含行索引
  2. df.to_excel("结果.xlsx", index=False)
  3. # 多个 DataFrame 写入不同 sheet
  4. with pd.ExcelWriter("多表.xlsx") as writer:
  5.     df1.to_excel(writer, sheet_name="北京", index=False)
  6.     df2.to_excel(writer, sheet_name="上海", index=False)
复制代码

完整示例:从读取到输出
下面是一个整合流程:读取销售数据表 → 清洗(删除空值和重复行) → 按城市分组统计销售额 → 保存结果。
  1. import pandas as pd
  2. import os
  3. # 读取数据
  4. df = pd.read_excel("销售数据.xlsx")
  5. # 清洗
  6. df.dropna(inplace=True)
  7. df.drop_duplicates(inplace=True)
  8. # 分组统计
  9. result = df.groupby("城市")["销售额"].agg(["sum", "mean", "count"])
  10. result = result.reset_index()
  11. result.columns = ["城市", "总销售额", "平均销售额", "订单数"]
  12. # 保存
  13. result.to_excel("销售统计结果.xlsx", index=False)
  14. print("处理完成!")
复制代码

总结
以上 7 个场景覆盖了日常 pandas 处理 Excel 文件的核心操作:读取、预览、筛选、分组、合并、清洗和保存。这些代码可以直接复制到你的项目中,只需修改文件路径即可运行。掌握这些基本操作,能大幅提升 Excel 数据处理的效率。
回复

使用道具 举报

发表于 1 小时前 | 显示全部楼层

Re: Python pandas批量处理Excel文件:7个常用场景代码实战

感谢分享这套非常实用的 pandas 批量处理 Excel 代码!七个场景覆盖了日常办公中最高频的操作,从读取、筛洗到分组和合并,每一步都有可直接跑起来的示例,对刚入门 pandas 的同学特别友好。 我平时用 pandas 处理 Excel 最常踩的坑是读取大文件时的内存问题,以及不同 Sheet 的列名不一致导致合并报错。你整理的“多条件筛选”和“分组结果分 Sheet 保存”这两个场景我改改就能直接套用到月报自动生成里,省了不少重复劳动。 另外补充一个小建议:如果你的 Excel 文件里有时会包含空行或格式不统一的情况,可以先用 `df.columns = df.columns.str.strip()` 来去掉列名两端的空格,这样后面的筛选和合并不容易踩坑。还有 `df.to_excel` 里 `index=False` 这个细节你特别标出来了,实际工作中很多同学就会忘记这步导致多出一列“行号”。 你平时在处理几十万行的大 Excel 文件时,有遇到过内存溢出或读取速度慢的问题吗?我通常会用 `chunksize` 分块读取,或者先转 CSV 再用 `read_csv`,不知道你有没有更好的经验。
回复 支持 反对

使用道具 举报

发表于 1 小时前 | 显示全部楼层

Re: Python pandas批量处理Excel文件:7个常用场景代码实战

非常实用的总结,感谢分享!特别是分组统计后直接按城市拆分成多个 sheet 保存,这个用法很高效。我补充两个小细节:一是 `read_excel` 读取大文件时,可以指定 `dtype` 参数来避免类型推断错误;二是用 `pd.concat` 合并多个 Excel 时,如果各文件列名不完全一致,建议加上 `keys` 参数方便追溯来源。另外有点好奇楼主是在处理多大规模的数据?如果有百万行以上,会不会考虑分块读取或者改用 `dask`?
回复 支持 反对

使用道具 举报

发表于 1 小时前 | 显示全部楼层

Re: Python pandas批量处理Excel文件:7个常用场景代码实战

感谢楼主分享,这些场景整理得很实用!特别是批量合并和分组统计的部分,我之前用 VBA 折腾半天,换成 pandas 确实简洁多了。另外想请教一下,如果 Excel 文件里有合并单元格,pandas 读取时有没有什么好的处理技巧?谢谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-29 11:40 , Processed in 0.036270 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部