narwhals-dev/narwhals
Lightweight and extensible compatibility layer between dataframe libraries!
何を解決するか
Narwhals は、開発者がデータフレームに依存しないコードを書けるようにする軽量な互換性レイヤーです。データフレームを扱うライブラリ(pandas、Polars、cuDF、PyArrow など)ごとに別々の実装を書く必要がなくなる問題を解決します。
動作方法
Narwhals は、Polars API のサブセットである統一された API を提供し、ネイティブのデータフレームオブジェクトをラップします。このプロセスは以下の3ステップで構成されます:
- ラップ:
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: 厳格な後方互換性ポリシーを維持。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト