narwhals-dev/narwhals

Lightweight and extensible compatibility layer between dataframe libraries!

解决的问题

Narwhals 是一个轻量级的兼容层,允许开发者编写与数据框无关的代码。它解决了在构建消费数据框的库时,必须为不同的数据框库(如 pandas、Polars、cuDF 和 PyArrow)编写独立实现的问题。

工作原理

Narwhals 提供了一个统一的 API——Polars API 的一个子集——用于包装原生数据框对象。该过程分为三个步骤:

  1. 包装:使用 narwhals.from_native 将原生数据框或 LazyFrame 包装成 Narwhals 类。
  2. 操作:使用支持的 Polars 风格 API 对数据执行操作。
  3. 返回:使用 narwhals.to_native 将对象以原始格式返回(例如,如果输入是 pandas DataFrame,则输出也是 pandas DataFrame)。

计算保持在输入库的原生环境中,意味着无需额外依赖,开销可忽略不计。

适用人群

维护消费数据框的库,希望支持多种数据框后端,但又不想添加依赖或编写重复代码的开发者。

特点

  • 广泛兼容:支持 cuDF、Modin、pandas、Polars 和 PyArrow(完整 API),以及 Daft、Dask、DuckDB、Ibis、PySpark 和 SQLFrame(仅延迟模式)。
  • 零依赖:仅使用用户传入的内容,保持宿主库轻量。
  • 原生性能:计算保持在输入库的原生环境中(例如,cuDF 的 GPU 计算)。
  • 完整静态类型:提供完整的静态类型,以获得更好的 IDE 支持。
  • 稳定 API:保持严格的向后兼容性策略。

相关

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