Python pandas批量处理Excel文件:7个常用场景代码实战
在日常办公和数据分析工作中,Excel 文件的读取、清洗、分组统计和合并是最高频的需求。Python 的 pandas 库提供了简洁高效的接口,能将这些操作自动化。本文整理 7 个最实用的 Excel 处理场景,每个场景都附带可直接粘贴运行的代码,帮你快速上手。一、读取 Excel 文件
pandas 用 read_excel 函数读取 Excel,支持指定 sheet、读取行数以及设置索引列。
import pandas as pd
# 读取全部 sheet
df = pd.read_excel("数据.xlsx")
# 读取指定 sheet
df = pd.read_excel("数据.xlsx", sheet_name="Sheet1")
# 仅读取前5行
df = pd.read_excel("数据.xlsx", nrows=5)
# 将“编号”列设为行索引
df = pd.read_excel("数据.xlsx", index_col="编号")
二、快速查看数据概况
拿到 DataFrame 后,用 head、info 和 describe 初步了解数据结构和统计特征。
# 查看前5行(默认)
print(df.head())
# 查看列名、数据类型及非空数量
print(df.info())
# 查看数值型列的统计摘要:均值、标准差、四分位数等
print(df.describe())
# 查看所有列名列表
print(df.columns.tolist())
三、数据筛选
pandas 支持布尔索引和多条件组合筛选,语法直观。
# 筛选城市等于“北京”的行
df == "北京"]
# 多条件:北京且销售额大于10000(& 表示与,| 表示或)
df[(df["城市"] == "北京") & (df["销售额"] > 10000)]
# 按值列表筛选,比如指定多个姓名
df.isin(["张三", "李四"])]
四、数据分组统计
groupby 配合聚合函数可快速完成分组统计,也支持多个统计指标同时计算。
# 按城市分组,求销售额总和
df.groupby("城市")["销售额"].sum()
# 分组后同时求总和、均值、计数
df.groupby("城市")["销售额"].agg(["sum", "mean", "count"])
# 将分组结果保存为多个 sheet(每个城市一个 sheet)
with pd.ExcelWriter("分组结果.xlsx") as writer:
for city, group in df.groupby("城市"):
group.to_excel(writer, sheet_name=city, index=False)
五、合并多个 Excel 文件
当多个结构相同的 Excel 文件分散在同一文件夹时,可批量读取并合并为一个 DataFrame。
import os
path = "销售数据"
all_data = []
for f in os.listdir(path):
if f.endswith(".xlsx"):
df = pd.read_excel(os.path.join(path, f))
all_data.append(df)
result = pd.concat(all_data, ignore_index=True)
result.to_excel("合并结果.xlsx", index=False)
print(f"合并完成,共{len(result)}行")
六、数据清洗(空值、重复值、替换、列名修改)
数据清洗是分析前的必要步骤,pandas 提供了 dropna、fillna、drop_duplicates、replace 和 rename 方法。
# 删除包含空值的行
df.dropna(inplace=True)
# 用0填充空值
df.fillna(0, inplace=True)
# 用上一个有效值填充(向前填充)
df.fillna(method="ffill", inplace=True)
# 删除重复行
df.drop_duplicates(inplace=True)
# 替换指定值
df.replace("旧值", "新值", inplace=True)
# 修改列名
df.rename(columns={"旧名": "新名"}, inplace=True)
七、保存 Excel 文件
将处理后的 DataFrame 导出是最终环节,支持单 sheet 或多 sheet 写入。
# 保存为单个 Excel,不包含行索引
df.to_excel("结果.xlsx", index=False)
# 多个 DataFrame 写入不同 sheet
with pd.ExcelWriter("多表.xlsx") as writer:
df1.to_excel(writer, sheet_name="北京", index=False)
df2.to_excel(writer, sheet_name="上海", index=False)
完整示例:从读取到输出
下面是一个整合流程:读取销售数据表 → 清洗(删除空值和重复行) → 按城市分组统计销售额 → 保存结果。
import pandas as pd
import os
# 读取数据
df = pd.read_excel("销售数据.xlsx")
# 清洗
df.dropna(inplace=True)
df.drop_duplicates(inplace=True)
# 分组统计
result = df.groupby("城市")["销售额"].agg(["sum", "mean", "count"])
result = result.reset_index()
result.columns = ["城市", "总销售额", "平均销售额", "订单数"]
# 保存
result.to_excel("销售统计结果.xlsx", index=False)
print("处理完成!")
总结
以上 7 个场景覆盖了日常 pandas 处理 Excel 文件的核心操作:读取、预览、筛选、分组、合并、清洗和保存。这些代码可以直接复制到你的项目中,只需修改文件路径即可运行。掌握这些基本操作,能大幅提升 Excel 数据处理的效率。
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`,不知道你有没有更好的经验。Re: Python pandas批量处理Excel文件:7个常用场景代码实战
非常实用的总结,感谢分享!特别是分组统计后直接按城市拆分成多个 sheet 保存,这个用法很高效。我补充两个小细节:一是 `read_excel` 读取大文件时,可以指定 `dtype` 参数来避免类型推断错误;二是用 `pd.concat` 合并多个 Excel 时,如果各文件列名不完全一致,建议加上 `keys` 参数方便追溯来源。另外有点好奇楼主是在处理多大规模的数据?如果有百万行以上,会不会考虑分块读取或者改用 `dask`?Re: Python pandas批量处理Excel文件:7个常用场景代码实战
感谢楼主分享,这些场景整理得很实用!特别是批量合并和分组统计的部分,我之前用 VBA 折腾半天,换成 pandas 确实简洁多了。另外想请教一下,如果 Excel 文件里有合并单元格,pandas 读取时有没有什么好的处理技巧?谢谢!
页:
[1]