趋近智
Pandas 提供了简单的方法将您的 DataFrame 保存为不同格式。虽然 CSV 文件因其简洁性和系统间的互操作性而表现出色,Microsoft Excel 文件(.xlsx 或旧版 .xls)在商业环境中非常常见,并支持在单个文件中包含多个工作表等功能。
Pandas 使用 to_excel() 方法可以简单地将 DataFrame 写入 Excel 文件,该方法与我们之前看到的 to_csv() 方法类似。
我们从一个基本示例开始。假设我们已经处理了一些数据并将其存储在一个 DataFrame 中:
import pandas as pd
# 示例 DataFrame
data = {'Product': ['Widget A', 'Widget B', 'Gadget C', 'Widget A'],
'Region': ['North', 'South', 'North', 'West'],
'Sales': [150, 200, 120, 180],
'Profit': [30, 45, 25, 38]}
df = pd.DataFrame(data)
print("原始 DataFrame:")
print(df)
# 将 DataFrame 保存到 Excel 文件
# 这会在您的脚本/笔记本所在的目录中创建 'output_data.xlsx'
df.to_excel('output_data.xlsx')
print("\nDataFrame 已成功保存到 output_data.xlsx")
如果您运行此代码,然后使用 Microsoft Excel、LibreOffice Calc 或 Google Sheets 等电子表格软件打开生成的 output_data.xlsx 文件,您会看到您的 DataFrame 以表格形式呈现。
to_excel() 方法提供了多个参数用于自定义输出文件。以下是一些常用的参数:
excel_writer(文件路径): 这是第一个参数,用于指定输出 Excel 文件的文件路径和名称(例如,'data/processed_sales.xlsx','report.xlsx')。
sheet_name: 默认情况下,DataFrame 会写入名为 'Sheet1' 的工作表。您可以使用此参数指定不同的名称。例如,df.to_excel('report.xlsx', sheet_name='SalesData')。
index: 与 to_csv() 类似,to_excel() 默认将 DataFrame 的索引作为 Excel 工作表的第一列写入。通常,此索引只是默认的顺序整数索引(0, 1, 2...),并不是您希望在最终电子表格中显示的有效数据。为避免写入索引,请设置 index=False:
# 不带 DataFrame 索引保存
df.to_excel('output_data_no_index.xlsx', index=False)
print("DataFrame 已保存到 output_data_no_index.xlsx,不含索引列。")
将 index=False 设置为常见做法,尤其是在为不熟悉 Pandas 索引的人导出数据时。
columns: 如果您只想保存 DataFrame 中的特定列,可以向 columns 参数提供列名列表:
# 仅保存 'Product' 和 'Sales' 列
df.to_excel('output_subset.xlsx', columns=['Product', 'Sales'], index=False)
print("已将 Product 和 Sales 列保存到 output_subset.xlsx")
header: 此参数控制是否将列名(标题行)写入文件。它默认为 True。如果您不想包含标题行,请设置 header=False。
startrow 和 startcol: 这些参数允许您指定 DataFrame 在工作表中写入的左上角单元格(0-索引)。例如,startrow=1, startcol=2 将从 C2 单元格开始写入 DataFrame(如果适用,包括其标题)。这在向现有工作表添加数据或创建更复杂布局时会很有用。
Excel 文件相对于简单 CSV 的一个重要优点是它们能够包含多个工作表。Pandas 允许您使用 pd.ExcelWriter 对象将多个 DataFrame 写入同一个 .xlsx 文件中的不同工作表。这通常使用 with 语句完成,它能确保文件正确保存和关闭。
您可以这样做:
import pandas as pd
# 创建两个示例 DataFrame
df_sales = pd.DataFrame({
'Region': ['North', 'South', 'East', 'West'],
'Sales': [1000, 1500, 1200, 1800]
})
df_inventory = pd.DataFrame({
'Product ID': ['P101', 'P102', 'P103', 'P104'],
'Stock': [50, 75, 30, 90],
'Warehouse': ['WH-A', 'WH-B', 'WH-A', 'WH-C']
})
# 使用 ExcelWriter 将两个 DataFrame 保存到同一个文件中的不同工作表
output_filename = 'multi_sheet_report.xlsx'
with pd.ExcelWriter(output_filename) as writer:
df_sales.to_excel(writer, sheet_name='销售汇总', index=False)
df_inventory.to_excel(writer, sheet_name='库存水平', index=False)
print(f"两个 DataFrame 已保存到 {output_filename}")
如果您打开 multi_sheet_report.xlsx,您会发现两个名为“销售汇总”和“库存水平”的工作表,每个工作表都包含相应 DataFrame 的数据。
为写入 Excel 文件,Pandas 依赖于称为“引擎”的外部库。
.xlsx 文件(推荐),您通常需要 openpyxl 库。.xls 文件,曾使用 xlwt 库。如果您尝试使用 to_excel() 但未安装所需引擎,Pandas 通常会引发 ImportError,并附带安装说明。您可以使用 pip 安装 openpyxl:
pip install openpyxl
或使用 conda:
conda install openpyxl
使用 df.to_excel() 将 DataFrame 保存到 Excel 文件是一项有用的技能,可用于分享您的分析结果或处理过的数据,尤其是在电子表格是数据查看和操作标准工具的环境中。请记住 index=False 选项可以使输出更整洁,并在需要将相关数据整理到单个文件中的多个工作表时,考虑使用 pd.ExcelWriter。虽然 Excel 很方便,但请注意,对于非常大的数据集,其写入速度可能比 CSV 或更专业的二进制格式慢。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造