- pandas と dask バックエンドを廃止し、バージョン 10.0 で削除する予定
- pandas バックエンドと既定の DuckDB バックエンドの間に機能差はなく、DuckDB のほうがはるかに高性能
- pandas DataFrame は引き続き Ibis でデータを受け渡しする形式として使用できるが、pandas を使ったクエリ実行はサポートしない
- ほとんどのロジックは dask バックエンドにも当てはまり、dask は優れたプロジェクトであり、Ibis の外では引き続き使うべき
なぜ pandas なのか? そして Ibis の歴史
- Ibis の初期には Impala バックエンドしか存在しなかった
- Postgres バックエンドが追加されたが、インストールが複雑で、ユーザーが気軽に Ibis を試せなかった
- ノートブック以外の追加インフラなしで Ibis API を試せる方法が必要だった
- 当時唯一のインメモリ DataFrame エンジンである
pandas バックエンドにつなぐのが明らかな答えだった
Pandas バックエンドの難しさ
- pandas は当時としては最良の選択だったが、Ibis のデータ分析モデルとは相性がよくなかった
- pandas バックエンドは他のバックエンドと根本的に異なり、最も多くの特別扱いのコードを抱えている
- pandas は本質的に即時実行エンジンであり、Ibis は遅延実行モデルを使う
- pandas インターフェースを遅延方式で動作させるのは難しい
- pandas バックエンドは他のバックエンドより遅く、そのために数千行のコードが必要
- pandas の
NaN と Ibis の NULL は根本的に異なる概念だが、これらを同じものとして扱わなければならない
- pandas では NaN を欠損値の表現として使ってきたが、これは他のバックエンドとの互換性問題を引き起こす
- NULL は欠損値を表し、NaN は数値ではないことを表す fundamentally 異なる概念
- pandas の新しい Arrow ベースの型は大きな改善だが、依然として問題がある
新規ユーザーを混乱させる
- 人は慣れたものを好む
- 初めて Ibis を使うとき、Ibis とバックエンドの両方を選ばなければならない
- 新規ユーザーはしばしば「Ibis は遅い」と報告する
- その大半は pandas バックエンドを使っていたため
- DuckDB や Polars を使っていれば、はるかに簡単に始められただろう
機能の同等性
- pandas バックエンドを削除する最も強力な理由は重複性にある
- DuckDB バックエンドは pandas DataFrame をシームレスにクエリでき、複数形式の UDF をサポートし、parquet、CSV、JSON などさまざまな形式の読み書きができる
- DuckDB はインストールが簡単で、ローカルで動作し、非常に高速で、Python エコシステムとうまく相互運用できる
GN⁺ のまとめ
- DuckDB を既定のバックエンドとして採用したのは非常に賢明な判断に見える。インストールが簡単で、ローカルで動作し、非常に高速で、Python エコシステムとうまく相互運用できる。これは Ibis が当初
pandas をバックエンドに追加した理由でもある
pandas が引き続きデータ受け渡しのフォーマットとして使える点は、既存の pandas ユーザーにとって良い知らせ。既存コードを完全に捨てる必要はない
- しかし、クエリ実行に
pandas をもう使わないのは正しい方向に見える。pandas の即時実行モデルは Ibis の遅延実行モデルと合わない。このため pandas バックエンドは、しばしば pandas を直接使うよりもはるかに遅い
- Ibis がますます多くのバックエンドをサポートするにつれて、特定のバックエンド向けに調整されたコードを保守するのはますます難しくなるだろう。
pandas バックエンドを削除すれば、コードベースはよりクリーンになり、保守もしやすくなるはず
- DuckDB バックエンドで
pandas の全機能を置き換えられるなら、pandas バックエンドを維持する理由はないように見える。むしろ新規ユーザーを混乱させる可能性がある
2件のコメント
やはり一番なじみのある pandas を今でも一番多く使っているのが現実ですよね、,
Hacker Newsの意見
NaN は 0/0 の結果で、値は存在するが正確には分からないことを意味する
pandas より優れた計算エンジンは多い
この数か月、新しいプロジェクトでは pandas を ibis に置き換えている
pandas のマルチインデックス機能が最も強力だ
Polars を検討したことがあるのか気になる
pandas は新しい種類の列へ拡張できる
Ibis の価値は DuckDB を使えることではない
Ibis についてはあまり聞いたことがない
pandas のライブラリ API は常に直感的というわけではない
pandas を使う理由は統合されたエコシステムにある