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:維持嚴格的向後相容性政策。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案