跳转至

Pandas Excel

概念与用途

Excel 适合人工审阅、多工作表报表和业务交换。Pandas 通过引擎读取或写入工作簿;.xlsx 常用 openpyxl,大批量分析通常应转换为列式格式。

核心 API

pd.read_excel、pd.ExcelFile、pd.ExcelWriter、DataFrame.to_excel;常用参数有 sheet_name、usecols、skiprows、dtype、parse_dates、index。

可运行示例

from pathlib import Path
from tempfile import TemporaryDirectory
import pandas as pd

with TemporaryDirectory() as folder:
    path = Path(folder) / "report.xlsx"
    source = pd.DataFrame({"name": ["Ada", "Lin"], "score": [92, 88]})
    source.to_excel(path, sheet_name="Scores", index=False)
    loaded = pd.read_excel(path, sheet_name="Scores")
    print(loaded)

示例二:一次读取多个工作表

from pathlib import Path
from tempfile import TemporaryDirectory
import pandas as pd

with TemporaryDirectory() as folder:
    path = Path(folder) / "book.xlsx"
    with pd.ExcelWriter(path, engine="openpyxl") as writer:
        pd.DataFrame({"id": [1], "day": ["2026-01-01"]}).to_excel(writer, "Orders", index=False)
        pd.DataFrame({"id": [1], "name": ["Ada"]}).to_excel(writer, "Users", index=False)
    sheets = pd.read_excel(path, sheet_name=None, dtype={"id": "Int64"})
    sheets["Orders"]["day"] = pd.to_datetime(sheets["Orders"]["day"])
    print(sheets.keys())

sheet_name=None 返回以工作表名为键的字典,不是单个 DataFrame。日期列若包含混合 Excel 日期和文本,显式读取后转换更便于审计失败值。

可选依赖与工程边界

.xlsx 常用 openpyxl,.xls 可能需要 xlrd,.xlsb 需要相应二进制工作簿引擎;引擎能力和支持格式不同。读取多个工作表可复用 ExcelFile 减少重复打开文件,但整个工作簿仍可能消耗较多内存。

注意事项

示例需要 openpyxl。合并单元格、公式、隐藏行和展示格式可能让读取结果与视觉内容不同;Pandas 读取的是缓存值而非计算公式。Excel 有行数限制且内存开销大,不适合海量数据。导出用户输入时同样要防公式注入,并用 ExcelWriter 一次管理多工作表。