narwhals-dev/narwhals
Lightweight and extensible compatibility layer between dataframe libraries!
解决的问题
Narwhals 是一个轻量级的兼容层,允许开发者编写与数据框无关的代码。它解决了在构建消费数据框的库时,必须为不同的数据框库(如 pandas、Polars、cuDF 和 PyArrow)编写独立实现的问题。
工作原理
Narwhals 提供了一个统一的 API——Polars API 的一个子集——用于包装原生数据框对象。该过程分为三个步骤:
- 包装:使用
narwhals.from_native将原生数据框或 LazyFrame 包装成 Narwhals 类。 - 操作:使用支持的 Polars 风格 API 对数据执行操作。
- 返回:使用
narwhals.to_native将对象以原始格式返回(例如,如果输入是 pandas DataFrame,则输出也是 pandas DataFrame)。
计算保持在输入库的原生环境中,意味着无需额外依赖,开销可忽略不计。
适用人群
维护消费数据框的库,希望支持多种数据框后端,但又不想添加依赖或编写重复代码的开发者。
特点
- 广泛兼容:支持 cuDF、Modin、pandas、Polars 和 PyArrow(完整 API),以及 Daft、Dask、DuckDB、Ibis、PySpark 和 SQLFrame(仅延迟模式)。
- 零依赖:仅使用用户传入的内容,保持宿主库轻量。
- 原生性能:计算保持在输入库的原生环境中(例如,cuDF 的 GPU 计算)。
- 完整静态类型:提供完整的静态类型,以获得更好的 IDE 支持。
- 稳定 API:保持严格的向后兼容性策略。
相关
- 项目
- 项目
- 项目
- 项目
- 项目