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