narwhals-dev/narwhals

Lightweight and extensible compatibility layer between dataframe libraries!

解决的问题

Narwhals 是一个轻量级的兼容层,允许开发者编写与数据框无关的代码。它通过提供单一、统一的 API,消除了库作者手动实现对多个数据框库(如 pandas、Polars、cuDF 和 PyArrow)支持的需要。

工作原理

Narwhals 使用 from_native 包装原生数据框对象,并允许用户使用 Polars API 的子集执行操作。一旦操作定义完成,使用 to_native 将对象返回到其原始库格式。此过程确保计算保持在输入库的原生环境中,从而维持性能,且开销可忽略不计。

适用人群

主要面向消费数据框的库的维护者,使他们能够在不添加依赖项的情况下支持多种后端。

特性亮点

  • 广泛兼容:原生支持 cuDF、Modin、pandas、Polars 和 PyArrow,通过插件支持 Dask、DuckDB、Ibis、PySpark 等,仅支持延迟模式。
  • 零依赖:该库不依赖于其支持的数据框库,保持宿主库轻量。
  • 静态类型:提供完整的静态类型支持,帮助 IDE 提供更好的智能提示。
  • 高性能:在保持几乎可忽略的开销的同时,确保 100% 的分支覆盖率。
  • 向后兼容:遵循严格的策略,确保 API 稳定性。

相关

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