Pandas使用教程 - Pandas 与 Excel 高级操作

目录

  • [进阶篇42. Pandas 与 Excel 高级操作](#进阶篇42. Pandas 与 Excel 高级操作)
    • [1. 从 Excel 中读取数据的高级技巧](#1. 从 Excel 中读取数据的高级技巧)
      • [1.1 读取多个工作表](#1.1 读取多个工作表)
      • [1.2 使用 ExcelFile 提升性能](#1.2 使用 ExcelFile 提升性能)
      • [1.3 读取指定列与数据类型转换](#1.3 读取指定列与数据类型转换)
    • [2. 将数据写入 Excel 的高级操作](#2. 将数据写入 Excel 的高级操作)
      • [2.1 使用 ExcelWriter 管理多工作表写入](#2.1 使用 ExcelWriter 管理多工作表写入)
      • [2.2 自定义格式与公式](#2.2 自定义格式与公式)
    • [3. 常见问题与优化策略](#3. 常见问题与优化策略)
      • [3.1 内存与性能优化](#3.1 内存与性能优化)
      • [3.2 格式兼容性](#3.2 格式兼容性)
      • [3.3 错误处理](#3.3 错误处理)
    • [4. 总结](#4. 总结)
    • [5. 参考资料](#5. 参考资料)

进阶篇42. Pandas 与 Excel 高级操作

在数据分析工作中,Excel 是一个非常常见的数据存储和交换格式。Pandas 提供了强大的 Excel 读写接口,不仅可以方便地读取单个或多个工作表,还支持写入数据到多个工作表、设置格式、添加公式等高级操作。本文将介绍如何利用 Pandas 与 Excel 进行高级交互,涵盖以下内容:

  • 从 Excel 中读取数据的高级技巧
  • 使用 ExcelWriter 写入多工作表和自定义格式
  • 与 Excel 文件交互时的常见问题及优化策略

1. 从 Excel 中读取数据的高级技巧

1.1 读取多个工作表

Pandas 的 read_excel() 支持读取单个或多个工作表。你可以通过传递工作表名称列表或使用 sheet_name=None 来读取整个工作簿。

python 复制代码
import pandas as pd

# 读取整个 Excel 文件中的所有工作表,返回一个字典
excel_file = 'data/sales_data.xlsx'
all_sheets = pd.read_excel(excel_file, sheet_name=None)
# 打印每个工作表的前几行数据
for sheet_name, df in all_sheets.items():
    print(f"工作表: {sheet_name}")
    print(df.head())

1.2 使用 ExcelFile 提升性能

对于大型 Excel 文件,建议使用 pd.ExcelFile 先加载文件,然后再按需读取各工作表,以避免重复解析:

python 复制代码
xls = pd.ExcelFile('data/sales_data.xlsx')
df_sheet1 = xls.parse('Sheet1')
print(df_sheet1.head())

1.3 读取指定列与数据类型转换

在读取数据时,通过 usecols 参数和 dtype 参数可以优化内存和速度,同时确保数据格式正确:

python 复制代码
df = pd.read_excel('data/sales_data.xlsx', sheet_name='Sheet1', usecols="A:C", dtype={'Sales': 'float32'})
print(df.dtypes)

2. 将数据写入 Excel 的高级操作

2.1 使用 ExcelWriter 管理多工作表写入

ExcelWriter 允许你将多个 DataFrame 写入同一 Excel 文件的不同工作表,支持指定不同的引擎(例如 openpyxlxlsxwriter)。

python 复制代码
import pandas as pd

# 示例 DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]})

# 使用 ExcelWriter 写入多个工作表
with pd.ExcelWriter('output/multi_sheet.xlsx', engine='xlsxwriter') as writer:
    df1.to_excel(writer, sheet_name='Sheet1', index=False)
    df2.to_excel(writer, sheet_name='Sheet2', index=False)
print("数据已成功写入 multi_sheet.xlsx")

2.2 自定义格式与公式

借助 xlsxwriter 引擎,你可以进一步定制 Excel 输出格式和添加公式:

python 复制代码
with pd.ExcelWriter('output/formatted.xlsx', engine='xlsxwriter') as writer:
    df = pd.DataFrame({'Sales': [100, 200, 150], 'Cost': [70, 120, 90]})
    df.to_excel(writer, sheet_name='Report', index=False)
    
    workbook  = writer.book
    worksheet = writer.sheets['Report']

    # 定义一个格式对象
    currency_format = workbook.add_format({'num_format': '$#,##0'})
    
    # 设置 Sales 列的格式(假设 Sales 在第一列)
    worksheet.set_column('A:A', 15, currency_format)
    
    # 添加公式,计算利润
    worksheet.write_formula('C2', '=A2-B2')
print("自定义格式和公式已写入 formatted.xlsx")

通过这种方式,可以在写入时设置列宽、单元格格式以及添加公式,满足业务需求。


3. 常见问题与优化策略

3.1 内存与性能优化

  • 指定数据类型 :在读取大文件时,通过 dtype 参数减少内存占用。
  • 按需读取 :利用 usecols 参数只读取所需列,避免加载无关数据。
  • 分块读取:对于超大文件,考虑分块读取(chunksize 参数),然后合并结果。

3.2 格式兼容性

  • 引擎选择 :对于写入操作,如果需要高级格式化,建议使用 xlsxwriter;若只需基本写入,openpyxl 也是不错的选择。
  • 日期格式 :确保读取和写入日期数据时正确设置日期格式,必要时使用 parse_dates 参数进行转换。

3.3 错误处理

  • 检查文件路径:确保 Excel 文件路径正确,否则会抛出 FileNotFoundError。
  • 日志记录与调试:在批量处理和自动化任务中,加入日志记录,及时捕获和处理异常,保证数据交互的稳定性。

4. 总结

本文详细介绍了 Pandas 与 Excel 高级操作的核心技术,包括如何高效读取多个工作表、优化数据类型和内存使用、使用 ExcelWriter 写入多工作表、以及如何定制输出格式与公式。掌握这些技巧可以让你在实际项目中更高效地处理 Excel 数据,构建自动化报告和数据分析流程。

通过合理配置读取参数、选择适合的写入引擎以及添加自定义格式,你可以将 Pandas 的强大数据处理能力与 Excel 的广泛应用无缝结合,满足各种业务需求。


5. 参考资料


希望本文能帮助你深入理解并灵活运用 Pandas 与 Excel 高级操作技巧,在实际数据分析和报告生成中获得更高效、更优美的输出。不断探索与实践,将使你在数据处理和自动化办公中取得更大的成功。

相关推荐
小白学大数据8 小时前
爬虫性能天花板:asyncio赋能 Aiohttp,并发提速 10 倍
开发语言·爬虫·数据分析
留白_10 小时前
pandas文件读取与存储
开发语言·python·pandas
技术小甜甜12 小时前
[办公效率] Excel 表格越做越乱,先整理字段、格式还是公式?
数据库·excel·办公效率·数据整理
Data-Miner12 小时前
休闲食品行业数据分析平台建设方案,揭秘增长新引擎!
大数据·数据库·数据分析
babe小鑫12 小时前
数据分析在营销行业的价值分析
数据挖掘·数据分析
SunnyDays101112 小时前
如何使用 C# 自动调整 Excel 行高和列宽
开发语言·c#·excel
SilentSamsara13 小时前
特征工程系统方法论:编码、分箱、交互特征与特征选择
开发语言·人工智能·python·机器学习·青少年编程·信息可视化·pandas
itgather13 小时前
OfficeExcel — Word / Excel DLL 验证台功能介绍
c#·word·excel
SelectDB技术团队13 小时前
预约发布会|核心产品力首发,如何构建面向 Agent 时代的企业级数据引擎
数据库·数据仓库·人工智能·数据分析·可观测·apache doris·selectdb
YangYang9YangYan13 小时前
民办本科大数据专业学习数据分析的价值分析
大数据·学习·数据分析