使用 pd.ExcelWriter 创建多工作表 Excel 文件的详细教程

with pd.ExcelWriter(...) as writer 可以将多个内容写入一个 Excel 文件中。具体地说,它创建了一个Excel 文件写入器,使得我们可以在一个文件中创建多个工作表(Sheet)。



with pd.ExcelWriter("模型指标和损失值.xlsx") as writer:
    metrics_df.to_excel(writer, sheet_name="Metrics", index=False)
    losses_df.to_excel(writer, sheet_name="Losses", index=False)


with pd.ExcelWriter(...) as writer 详解

1. pd.ExcelWriter("模型指标和损失值.xlsx")
  • pd.ExcelWriter 是 Pandas 提供的类,用于将数据写入 Excel 文件(.xlsx 格式)。
  • "模型指标和损失值.xlsx" 是要保存的 Excel 文件的名称。在运行代码时会创建这个文件,如果文件已存在,会覆盖原内容。
  • 通过 pd.ExcelWriter,我们可以在同一个 Excel 文件中创建不同的工作表(sheet)。
2. with 语句的作用
  • with ... as writer: 表示以上下文管理的方式使用 ExcelWriter,可以确保写入操作完成后自动关闭文件。
  • 上下文管理的方式 (with) 可以有效管理文件资源,防止文件写入后忘记关闭导致的数据损坏。
3. writer 的作用
  • writerpd.ExcelWriter 实例的句柄,用于控制文件写入过程。
4. to_excel(writer, sheet_name="Metrics", index=False)
  • metrics_df.to_excel(writer, sheet_name="Metrics", index=False)metrics_df 数据写入到 writer 所指定的 Excel 文件的 "Metrics" 工作表中。
  • sheet_name="Metrics" 表示创建的工作表名称为 "Metrics"
  • index=False 表示不将数据框的索引写入 Excel 表中。
5. to_excel(writer, sheet_name="Losses", index=False)
  • losses_df.to_excel(writer, sheet_name="Losses", index=False)losses_df 数据写入到 Excel 文件的 "Losses" 工作表中。
  • 因此,最终的 Excel 文件将有两个工作表,一个名为 "Metrics",另一个名为 "Losses",每个工作表分别包含 metrics_dflosses_df 的数据。

代码示例解释

import pandas as pd

# 示例数据
metrics_df = pd.DataFrame({"MSE": [0.1], "RMSE": [0.3], "MAE": [0.2], "R2 Score": [0.9]})
losses_df = pd.DataFrame({"Epoch": list(range(1, 101)), "Train Loss": [0.5] * 100, "Test Loss": [0.6] * 100})

# 使用 pd.ExcelWriter 写入多个工作表
with pd.ExcelWriter("模型指标和损失值.xlsx") as writer:
    metrics_df.to_excel(writer, sheet_name="Metrics", index=False)  # 创建 Metrics 工作表
    losses_df.to_excel(writer, sheet_name="Losses", index=False)    # 创建 Losses 工作表

# 输出结果
print("Excel 文件已创建,包含两个工作表:'Metrics' 和 'Losses'。")

运行结果

此代码将创建一个名为 "模型指标和损失值.xlsx" 的 Excel 文件,包含两个工作表:

  • "Metrics":包含 metrics_df 的数据(例如模型的 MSE、RMSE、MAE、R² 等)。
  • "Losses":包含 losses_df 的数据(例如每个 epoch 的训练损失和测试损失)。

这样可以在一个文件中查看多个内容,便于分析和共享。

上一篇:在 MacOS 上跑 kaldi


下一篇:数据结构 C/C++(实验三:队列)