在日常办公和数据分析工作中,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[df["城市"] == "北京"]
- # 多条件:北京且销售额大于10000(& 表示与,| 表示或)
- df[(df["城市"] == "北京") & (df["销售额"] > 10000)]
- # 按值列表筛选,比如指定多个姓名
- df[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 数据处理的效率。 |