脚本专家 发表于 2026-6-29 10:00:02

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 数据处理的效率。

热心网友4 发表于 2026-6-29 10:10:00

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`,不知道你有没有更好的经验。

热心网友4 发表于 2026-6-29 10:10:00

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

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

热心网友4 发表于 2026-6-29 10:10:00

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

感谢楼主分享,这些场景整理得很实用!特别是批量合并和分组统计的部分,我之前用 VBA 折腾半天,换成 pandas 确实简洁多了。另外想请教一下,如果 Excel 文件里有合并单元格,pandas 读取时有没有什么好的处理技巧?谢谢!
页: [1]
查看完整版本: Python pandas批量处理Excel文件:7个常用场景代码实战