Pandas Excel 文件操作(手把手讲解)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观

前言:为什么选择Pandas处理Excel文件?

在数据处理领域,Excel作为最广泛使用的电子表格工具,其文件格式(.xlsx 或 .xls)几乎成为数据存储的通用语言。然而,当需要批量处理大量Excel文件时,手动操作显然效率低下。此时,Python的Pandas库便成为数据工程师和开发者的首选工具。Pandas凭借其简洁的语法、强大的数据操作能力,以及与Excel的天然兼容性,为自动化处理Excel文件提供了高效解决方案。

本文将从基础操作逐步深入,结合实际案例讲解如何使用Pandas实现Excel文件的读取、清洗、转换与导出。无论是编程新手还是中级开发者,都能通过本文掌握从简单到复杂的数据处理技巧,并理解如何将Pandas的灵活性与Excel的直观性结合,提升工作效率。


一、Pandas Excel 文件操作的基础:读写入门

1.1 安装与环境准备

在开始之前,需确保已安装Pandas和用于读取Excel的依赖库openpyxlxlrd

pip install pandas openpyxl  

1.2 读取Excel文件:从文件到DataFrame

Pandas通过read_excel()函数将Excel文件转换为DataFrame(二维数据结构)。例如,读取名为sales_data.xlsx的文件:

import pandas as pd  

df = pd.read_excel("sales_data.xlsx")  

df = pd.read_excel("sales_data.xlsx", sheet_name="Sheet2")  

比喻理解
可以将Excel文件想象为一个图书馆,每个工作表是不同的书架,而sheet_name参数如同指引你走到特定书架的路标。

1.3 写入Excel文件:保存数据回Excel

使用to_excel()方法将DataFrame导出为Excel文件:

df.to_excel("output.xlsx", index=False)  

with pd.ExcelWriter("output.xlsx") as writer:  
    df1.to_excel(writer, sheet_name="Sheet1")  
    df2.to_excel(writer, sheet_name="Sheet2")  

参数说明

  • index=False:避免将DataFrame的索引列写入Excel。
  • ExcelWriter:支持在单个文件中写入多个工作表,如同将不同书架合并到同一图书馆。

二、数据筛选与处理:Excel的进阶操作

2.1 条件筛选:布尔索引与loc/iloc

通过布尔索引或loc/iloc方法,可快速筛选Excel中的特定数据。例如,筛选销售额大于10000的记录:

filtered_df = df[df["Sales"] > 10000]  

selected_columns = df.loc[df["Region"] == "North", ["Product", "Sales"]]  

比喻理解
布尔索引如同在图书馆中按标签筛选书籍,而loc则像按坐标精准抓取书架上的书籍。

2.2 数据清洗:处理缺失值与重复项

Excel文件常包含空值或重复数据,需通过以下方法清洗:

cleaned_df = df.dropna()  

df["Sales"].fillna(df["Sales"].mean(), inplace=True)  

unique_df = df.drop_duplicates()  

注意事项

  • inplace=True会直接修改原DataFrame,而非返回新对象。
  • 根据业务场景选择填充策略(如均值、中位数或固定值)。

三、复杂操作实战:合并、分组与自定义函数

3.1 合并多个Excel文件

当需要合并多个Excel文件时,可使用循环与concat()函数:

import os  

file_paths = [f for f in os.listdir(".") if f.endswith(".xlsx")]  

combined_df = pd.concat(  
    [pd.read_excel(f) for f in file_paths],  
    ignore_index=True  
)  

3.2 分组聚合:透视数据的“Excel数据透视表”

使用groupby()agg()实现类似Excel数据透视表的功能:

grouped = df.groupby("Region").agg(  
    total_sales=("Sales", "sum"),  
    avg_quantity=("Quantity", "mean")  
)  

3.3 自定义函数:扩展数据处理逻辑

通过apply()方法对列或行应用自定义函数:

def calculate_profit(row):  
    return row["Sales"] - row["Cost"]  

df["Profit"] = df.apply(calculate_profit, axis=1)  

四、性能优化:高效处理大规模Excel文件

4.1 分块读取:避免内存溢出

处理超大数据集时,使用chunksize参数分块读取:

chunk_size = 10000  
with pd.ExcelFile("large_data.xlsx") as xls:  
    for chunk in pd.read_excel(xls, chunksize=chunk_size):  
        process(chunk)  # 自定义处理逻辑  

4.2 数据类型转换:减少内存占用

通过dtype参数指定列的数据类型:

df["Category"] = df["Category"].astype("category")  

df = pd.read_excel("data.xlsx", dtype={"Sales": "float32"})  

五、常见问题与解决方案

5.1 文件格式兼容性问题

若文件为旧版.xls格式,需安装xlrd库:

pip install xlrd  

5.2 特殊字符导致的报错

Excel文件名或路径含特殊字符时,建议使用绝对路径或转义符号:

df = pd.read_excel(r"C:\Users\Documents\sales report.xlsx")  

结论:掌握Pandas Excel操作的长远价值

通过本文的讲解,读者已掌握了从基础读写到复杂数据处理的全流程方法。Pandas Excel文件操作不仅提升了数据处理的自动化程度,更帮助开发者在数据分析、报告生成等场景中节省大量时间。

无论是批量处理销售数据、合并多源报表,还是清洗脏数据,Pandas都提供了灵活高效的工具。建议读者通过实际项目巩固所学,例如尝试从公司内部的Excel文件中提取关键指标,或构建自动化数据处理脚本。随着经验积累,您将发现Pandas与Excel结合的无限可能。

记住,数据处理的本质是“让机器代替人做重复劳动”。掌握这一技能,您将在数据驱动的职场中占据先机。

最新发布