1.2 依赖

本节大纲

  • NumPy
  • python-dateutil
  • pytz
  • tzdata
  • 可选依赖:pyarrow、openpyxl、xlrd、lxml、html5lib、BeautifulSoup4、tables、SQLAlchemy、matplotlib、scipy、bottleneck、numba

1. 必需依赖

1.1 NumPy

  • 作用:pandas 的底层数组计算库,所有数值计算、存储和广播操作都基于 NumPy。
  • 版本:pandas 2.3.3 要求 NumPy >= 1.26.0(或更高,取决于 Python 版本)。
  • 交互:
    • DataFrame.values 返回 NumPy 数组。
    • 许多 pandas 函数接受 NumPy 函数作为参数(如 df.apply(np.sum))。
    • pandas 的 ExtensionArray 与 NumPy 数组可互操作。
  • 性能:pandas 通过 NumPy 的向量化操作实现高性能。

1.2 python-dateutil

  • 作用:提供日期解析和时间处理功能,用于 pd.to_datetime() 等函数。
  • 关键模块:dateutil.parser、dateutil.relativedelta。
  • 应用:
    • 自动推断日期格式(pd.to_datetime('2024-01-01'))。
    • 支持相对时间差(如 pd.DateOffset(months=1))。
  • 注意:安装 pandas 时会自动安装,无需单独处理。

1.3 pytz

  • 作用:提供时区数据库,用于处理带时区的时间数据。
  • 应用:
    • pd.Timestamp('2024-01-01', tz='US/Eastern') 依赖 pytz。
    • Series.tz_localize('UTC') 和 Series.tz_convert('Asia/Shanghai')。
  • 注意:pandas 也支持 zoneinfo(Python 3.9+),但 pytz 仍被广泛使用。

1.4 tzdata

  • 作用:IATA 时区数据库的 Python 包,为 pytz 或 zoneinfo 提供时区规则数据。
  • 重要性:某些系统(如 Windows)缺少系统时区数据库,tzdata 确保时区转换正确。
  • 典型场景:在 Docker 等精简环境中,没有 /usr/share/zoneinfo 时,tzdata 提供时区信息。

2. 可选依赖

可选依赖不是安装 pandas 时自动安装,但某些功能需要它们。可以通过 pip install pandas[extra] 或单独安装。

依赖功能用途说明
pyarrowParquet、Feather、Arrow 内存格式read_parquet()、to_parquet()、read_feather()、to_feather(),以及 dtype_backend='pyarrow' 高性能字符串和数据类型。
openpyxlExcel 读写(.xlsx)read_excel() 和 to_excel() 的默认引擎之一,支持样式、公式等。
xlrd旧版 Excel(.xls)读取支持 .xls 文件(xlrd 2.0+ 仅支持 .xls,不再支持 .xlsx)。
lxmlHTML/XML 解析read_html() 的解析引擎之一,速度快、容错好。
html5libHTML5 解析严格遵循 HTML5 规范,速度较慢但兼容性最好。
BeautifulSoup4HTML/XML 解析与 lxml 或 html5lib 配合使用,提供更灵活的解析。
tablesHDF5 文件read_hdf()、to_hdf()、HDFStore,用于高效存储大规模数据。
SQLAlchemySQL 数据库连接read_sql()、to_sql() 需要 SQLAlchemy 引擎。
matplotlib可视化DataFrame.plot()、Series.plot() 等绘图功能。
scipy科学计算扩展某些统计函数(如 df.kurt() 的某些算法)需要 SciPy。
bottleneck加速统计计算替换 NumPy 的 nan 处理函数,提升 sum、mean 等性能。
numbaJIT 编译加速通过 pd.options.compute.use_numba 启用,加速 apply、rolling 等操作。

安装建议

  • 完整安装:pip install pandas[all] 会安装所有可选依赖(可能体积较大)。
  • 按需安装:
    pip install openpyxl         # Excel
    pip install pyarrow          # Parquet/Arrow
    pip install sqlalchemy       # SQL
    pip install matplotlib       # 绘图

提示

使用 pd.show_versions() 可以查看哪些可选依赖已安装。