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] 或单独安装。
| 依赖 | 功能 | 用途说明 |
|---|---|---|
| pyarrow | Parquet、Feather、Arrow 内存格式 | read_parquet()、to_parquet()、read_feather()、to_feather(),以及 dtype_backend='pyarrow' 高性能字符串和数据类型。 |
| openpyxl | Excel 读写(.xlsx) | read_excel() 和 to_excel() 的默认引擎之一,支持样式、公式等。 |
| xlrd | 旧版 Excel(.xls)读取 | 支持 .xls 文件(xlrd 2.0+ 仅支持 .xls,不再支持 .xlsx)。 |
| lxml | HTML/XML 解析 | read_html() 的解析引擎之一,速度快、容错好。 |
| html5lib | HTML5 解析 | 严格遵循 HTML5 规范,速度较慢但兼容性最好。 |
| BeautifulSoup4 | HTML/XML 解析 | 与 lxml 或 html5lib 配合使用,提供更灵活的解析。 |
| tables | HDF5 文件 | read_hdf()、to_hdf()、HDFStore,用于高效存储大规模数据。 |
| SQLAlchemy | SQL 数据库连接 | read_sql()、to_sql() 需要 SQLAlchemy 引擎。 |
| matplotlib | 可视化 | DataFrame.plot()、Series.plot() 等绘图功能。 |
| scipy | 科学计算扩展 | 某些统计函数(如 df.kurt() 的某些算法)需要 SciPy。 |
| bottleneck | 加速统计计算 | 替换 NumPy 的 nan 处理函数,提升 sum、mean 等性能。 |
| numba | JIT 编译加速 | 通过 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()可以查看哪些可选依赖已安装。