narwhals-dev/narwhals

Lightweight and extensible compatibility layer between dataframe libraries!

何を解決するか

Narwhals は、開発者がデータフレームに依存しないコードを書けるようにする軽量な互換性レイヤーです。データフレームを扱うライブラリ(pandas、Polars、cuDF、PyArrow など)ごとに別々の実装を書く必要がなくなる問題を解決します。

動作方法

Narwhals は、Polars API のサブセットである統一された API を提供し、ネイティブのデータフレームオブジェクトをラップします。このプロセスは以下の3ステップで構成されます:

  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: 厳格な後方互換性ポリシーを維持。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト