Polars入門 — Pandasユーザーにおすすめの次世代DataFrame

人工知能

Pythonでデータ分析といえば Pandas が定番ですが、近年注目を集めているのが Polars です。Rustで実装されていて、超高速・低メモリ・並列処理対応が特徴。大きめのデータを扱う人や、処理速度に悩んでいる人には特におすすめです。

ここでは短時間で読めるように、基本の使い方とPandasとの違いを整理します。


🚀 Polarsの特徴

  • 列指向(columnar storage)
    列ごとの処理に最適化されており、集計や数値計算が速い。
  • マルチスレッド処理
    標準でCPUをフル活用。特に大規模データで差が出る。
  • Eager / Lazy モード
    即時実行(Pandasに近い)と遅延評価(Sparkに似ている)を切り替え可能。
  • Pandas互換あり
    to_pandas()from_pandas() で簡単に相互変換できる。

🛠️ インストール

pip install polars
Bash

📑 基本操作(Eagerモード)

Pandas感覚で扱えるのでとっつきやすいです。

import polars as pl

# データ読み込み
df = pl.read_csv("data.csv")

# カラム選択とフィルタ
df2 = (
    df.select(["id", "value", "category"])
      .filter(pl.col("value") > 10)
      .with_columns((pl.col("value") * 2).alias("value_x2"))
)

print(df2)
Bash

集計(groupby)

agg = df2.groupby("category").agg([
    pl.col("value").sum().alias("sum_value"),
    pl.col("value").mean().alias("mean_value")
])

print(agg)
Bash


Pandasとの違いは、メソッドチェーンと「Expressions」中心の書き方
pl.col("value") のように「列」を指定して操作するのが基本です。


⚡ Lazyモード(最適化された遅延評価)

大きなデータや複雑なパイプラインでは、Lazyモードが効率的です。

lazy = (
    pl.scan_csv("big.csv")         # 遅延読み込み
      .filter(pl.col("x") > 0)
      .with_columns((pl.col("y") / pl.col("x")).alias("ratio"))
      .groupby("group").agg(pl.col("ratio").mean())
)

# collect()を呼ぶまで実行されない
result = lazy.collect()
Bash

Polars内部でクエリ最適化が走るため、不要な処理を省略して効率的に実行してくれます。
Pandasにはない強力な機能です。


🔗 Join(結合)の例

left = pl.DataFrame({"id": [1,2,3], "a":[10,20,30]})
right = pl.DataFrame({"id":[2,3,4], "b":[100,200,300]})

joined = left.join(right, on="id", how="left")
print(joined)
Bash

Pandasと同じ感覚で使えるので安心。


🔄 Pandasとの相互運用

既存コードと併用も簡単です。

# Polars → Pandas
pdf = df.to_pandas()

# Pandas → Polars
import pandas as pd
df2 = pl.from_pandas(pdf)
Bash

🎯 よく使う便利な表現

Polarsは「Expression API」で柔軟に操作できます。

# 文字列検索
df.filter(pl.col("name").str.contains("foo"))

# ランク付け
df.with_columns(pl.col("score").rank().alias("rank"))

# 条件分岐
df.with_columns(
    pl.when(pl.col("value") > 0).then("positive").otherwise("negative").alias("sign")
)
Bash

📝 Polarsを選ぶ基準

  • ✅ データが数百万行以上でPandasが遅い
  • ✅ 並列処理でスピードを上げたい
  • ✅ 複雑な集計をまとめて最適化したい
  • ❌ 小規模で簡単な処理 → Pandasで十分

📌 まとめ

  • Polarsは 次世代のDataFrameライブラリ
  • Pandas感覚で使えるが、速くて省メモリ
  • Lazyモードで大規模処理を最適化
  • Pandasとの移行も簡単なので、まずは部分的に導入がおすすめ

コメント

タイトルとURLをコピーしました