abstractqqq/polars_ds_extension

Polars extension for general data science use cases

PDS (polars_ds) — 面向 Polars 的数据科学工具包

简介: PDS 是一个 Python 包,它在快速数据框库 Polars 之上添加了数据科学工具。它专为那些已经使用 Polars 并希望在不切换到 Pandas 或 scikit-learn 等其他工具的情况下进行统计分析、机器学习建模和特征工程的用户而设计。

安装: pip install polars-ds

主要功能

1. 机器学习指标(并行)

你可以利用 Polars 的惰性求值,一次性计算不同数据切片上的 ROC AUC 和 log loss 等指标。README 中的示例:

df.lazy().group_by("segments").agg(
    pds.query_roc_auc("actual", "predicted").alias("roc_auc"),
    pds.query_log_loss("actual", "predicted").alias("log_loss"),
).collect()

这将返回一个表格,每一行对应一个分段,并包含各自的 ROC AUC 和 log-loss 值。

2. 快速建模(非持久化)

你可以直接在数据框表达式中运行简单模型,无需单独的训练步骤。可用模型包括:

  • 线性回归(可选 L1/L2 正则化 → Lasso, Ridge, Elastic Net)
  • 非负线性回归
  • 滚动和递归线性回归
  • 二元逻辑回归(带 L1/L2)
  • statsmodels 风格的回归汇总表(系数、标准误、t-统计量、p-值、R²)

示例:pds.lin_reg(pl.col("x1"), pl.col("x2"), target=pl.col("y"), add_bias=False, return_pred=True) 返回作为结构列的预测结果。

3. 距离函数

  • 字符串距离: Levenshtein, Optimal String Alignment, Jaro-Winkler(由 RapidFuzz 提供支持,速度极快)
  • 数组/列表距离: 两个数组列之间的平方 L2(欧几里得)距离

4. 统计检验

内置可在 group_by 聚合中运行的检验:

  • 独立 t 检验(可选不等方差)
  • 卡方检验
  • F 检验(ANOVA 风格,比较组均值)

每个检验返回一个包含统计量和 p-值的结构体。

5. 便捷辅助工具

pds.E(['a', 'b'], ["min", "max", "n_unique", "len"]) 可一次性生成多个聚合表达式,无需手动编写。

6. 数据转换管道

用于构建可重用预处理步骤的 Blueprint/Pipeline 系统:

  • 过滤行
  • 填充缺失值(线性或中位数)
  • 添加自定义表达式(对数变换、截断等)
  • 数值列缩放(标准化)
  • 独热编码、证据权重编码、目标编码
  • 实例化为可转换新数据的 Pipeline 对象

它支持通过 collect_batches() 进行批处理,适用于流式机器学习工作流。

7. 最近邻查询

查找每个点给定半径内的所有点(使用平方 L2 距离),并返回邻居 ID。README 指出这对于大 k 值或高维数据并不快。

8. 与其他数据框的兼容性

通过 polars_ds.compat 模块,只要列实现了 to_numpy(),PDS 函数就可以与其他急切数据框(如 Pandas)一起工作。示例:pds2.lin_reg(df_pd["x1"], df_pd["x2"], target=df_pd["y"], return_pred=True)。

其他说明

  • 性能: README 声称它通常比 Pandas + SciPy/Sklearn/NumPy 更快,特别是在同时评估多个表达式和多核机器上。
  • 依赖: 要求 Polars ≥ 1.4.0。Python 3.9 使用 Polars 1.x;Polars 2 要求 Python ≥ 3.10。
  • 从源码构建: 需要 Rust 和 maturin。你可以设置 RUSTFLAGS 以支持 LTS CPU 或原生 CPU。
  • 致谢: 使用了 Statrs(统计)、faer(线性代数)和 RapidFuzz(字符串相似度)。
  • 维护: 主要由一人维护;AI 辅助代码由维护者审核,AI 生成的 PR 会受到严格审查。

文档: polars-ds-extension.readthedocs.io

相关

  • 项目
  • 项目
  • 项目
  • 项目