CUBE SUGAR CONTAINER

技術系のこと書きます。

Polars

Python: Polars の shrink_dtype で DataFrame の使用メモリを削減する

Kaggle などのデータ分析コンペで使われるテクニックのひとつに reduce_mem_usage() 関数がある。 これは、一般に pandas の DataFrame のメモリ使用量を削減するために用いられる。 具体的には、カラムに出現する値を調べて、それを表現する上で必要最低限…

Python: scikit-learn は v1.4 から Polars をサポートした

scikit-learn に組み込みで用意されている Transformer は、長らく入出力として NumPy 配列にしか対応していなかった。 その状況が変わったのは v1.2 以降で、Pandas の DataFrame を扱えるようになった。 blog.amedama.jp そして v1.4 からは、ついに Polar…

Polars と PySpark / スケールアップとスケールアウト

これは Polars Advent Calendar 2023 の 4 日目に対応したエントリです。 qiita.com Polars と PySpark は操作方法が似ていると言われることがある。 そこで、今回はいくつかの基本的な操作について、実際に両者でコードを比較してみた。 また、それぞれの思…

Python: Polars で文字列が省略される文字数を変更する

Polars は DataFrame や Series に含まれる文字列が、デフォルトでは 32 文字までしか表示されず、それを超えると省略されてしまう。 今回は、その挙動を変更する方法について書く。 結論から先に述べると pl.Config.set_fmt_str_lengths() を使うことで、省…

Python: Polars と NumPy / SciPy の関数を組み合わせて使う

Polars を使って数値を加工しようとすると、数学に関する API がさほど多くないことに気づく。 そうしたときに、最初に思いつくのは Series オブジェクトを NumPy 配列に変換した上で処理する方法かもしれない。 しかし、実際には Polars の Expr オブジェク…

Python: Polars の DataFrame をゼロコピーで Pandas の DataFrame に変換する

Polars の DataFrame は to_pandas() メソッドを使うことで Pandas の DataFrame に変換できる。 このとき、デフォルトではメモリのコピーが生じる。 pola-rs.github.io ただし、オプションとして use_pyarrow_extension_array=True を渡すとゼロコピーで変…

Python: Polars で各種エンコーダを実装したライブラリ「Shirokumas」を作った

最近は Polars が気に入っていて、主にプライベートで使っている。 ただ、エコシステムという観点では Pandas に比べて発展途上の段階にあると思う。 そこで、今回は発展の一助として「Shirokumas」というライブラリを作ってみた。 github.com どんなライブ…

Python: DuckDB と Polars を組み合わせて使う

DuckDB のバージョン 0.7 で Polars とのインテグレーションが強化された。 たとえば Polars の DataFrame に対して DuckDB の Python API で直接クエリを発行できるようになったらしい。 また、DuckDB で実行したクエリの結果を Polars の DataFrame に変換…

Python: Polars で行・列が省略されないようにする

今回は Python のデータフレームライブラリの Polars で、データフレームを表示するときに行と列が省略されないようにする方法について。 結論から先に述べると、省略したくないときは pl.Config.set_tbl_cols() と pl.Config.set_tbl_rows() に負の整数 (た…