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 高级操作技巧,在实际数据分析和报告生成中获得更高效、更优美的输出。不断探索与实践,将使你在数据处理和自动化办公中取得更大的成功。

相关推荐
jambinliang2 小时前
工业零件不良率、残次率的智能数据分析和数字化管理
大数据·python·sql·数据分析
m0_672449605 小时前
使用Java操作Excel
java·python·excel
修昔底德6 小时前
费曼学习法12 - 告别 Excel!用 Python Pandas 开启数据分析高效之路 (Pandas 入门篇)
人工智能·python·学习·excel·pandas
邹霍梁@开源软件GoodERP6 小时前
【AI+智造】基于阿里云Ubuntu24.04系统,使用Ollama部署开源DeepSeek模型并集成到企业微信
人工智能·数据分析·制造
qq_316837758 小时前
若依 el-upload 上传execl 导入后 返回错误数据excel(二)
windows·excel
Jason-河山8 小时前
如何利用数据分析优化库存策略
数据挖掘·数据分析
Python数据分析与机器学习8 小时前
《基于大数据的相州镇新农村商务数据分析与研究》开题报告
大数据·人工智能·python·算法·数据挖掘·数据分析
SelectDB技术团队9 小时前
Apache Doris 3.0.4 版本正式发布
大数据·数据库·数据分析·doris·存算分离
dundunmm9 小时前
【数据挖掘】Pandas之DataFrame
大数据·人工智能·机器学习·数据挖掘·pandas