ねこの妖精

雑記|🐼Pandasから🧊Polarsに浮気してみた話 #python

  • URLをコピーしました!

 

こんにちは、一応データサイエンティストっぽい仕事をしています、ねこです✨

今日は珍しく(?)仕事の話をしてみようかな〜と思います🐾

 

最近仕事でPolarsを使う機会が多く、Pandasと似てるけど、使用感で違う所もたくさんあるな~と感じました。


Polarsが出てからまあまあ経ってるので今更感はあるんですが、今回は私なりに使ってみてどうだったかの感想をまとめてみます。

 

🐼 Pandasとは?🧊 Polarsとは?

ざっくり言うと、どちらも「データフレーム」(表形式のデータ)を扱うためのPythonライブラリです。

  • Pandas:ずっと昔からある王道ライブラリ。ExcelとかCSVの処理、データの集計・整形、グラフ作りにも使われてます。
  • Polars:最近注目されてる新しめのライブラリ。Rustベースで動作がとっても速いのが特徴。

私は最初ず〜っとPandasばかり使っていたんですけど、職場でPolarsを使っている方が多くオススメされたことをきっかけに浮気してみて、「あ、なんかサクサクしてて気持ちいい…」ってなってしまいました(笑)

 

例1:読み込みの速さがすごい(体感3倍速)

ある日、100MBくらいのCSVファイルを読み込んで加工してたら、Pandasだと3〜4秒くらいかかってました。

で、試しにPolarsで読み込んでみたら、なんと1秒以下!

たった数秒程度ですが、これよりもっと大規模データだと数十分単位の時間の節約になることも。

# Pandas
import pandas as pd
df = pd.read_csv("bigdata.csv")
# Polars
import polars as pl
df = pl.read_csv("bigdata.csv")

 

基本的な語法はPandasと変わらないです。

また、ChatGPTでも書き換えはほぼ正確にしてくれるぐらいの精度なので、既存のPandasコードをPolarsに変換したい場合も容易でした。

 

例2:groupby集計がスッキリ書ける

データ分析でよく使うのが「グループごとの平均」とか「合計値」みたいな処理ですよね。
Pandasでもできるけど、ちょっと書き方が複雑に感じることがあって…

# Pandas
df.groupby("category")["sales"].sum().reset_index()
# Polars
df.groupby("category").agg(pl.col("sales").sum())

Polarsはこの .agg() がとってもわかりやすくて、個人的には好きです。
集計が増えても読みやすさが変わらない感じ。

# 複数集計の例(Polars)
df.groupby("category").agg([
pl.col("sales").mean(),
pl.col("sales").max()
])

 

見た目がスッキリしてて、今なにやってるかが目に入りやすいです。

 

例3:メモリが軽い感じがする

これは「体感」でしかないのですが、Polarsを使ってるとメモリ使用量が抑えられてるように感じます。
古いノートパソコンで作業してると、Pandasだとちょっと重たくなっちゃう場面でも、Polarsは軽快に動いてくれました。

特に、「データをコピーしない」挙動がデフォルトなので、何度も変数に入れたりするコードでもメモリ消費が抑えられることが多い気がします。
ただ、これには注意点もあって、意図せず元データが書き換わってしまうこともあるので、慣れるまでは慎重に使うのがおすすめです。

 

 

とはいえPandasも大好きです

ここまでPolars寄りの話をしてきましたが、PandasにはPandasの良さがあるのも事実です。

  • 可視化ライブラリとの相性がいい(SeabornやMatplotlibとか)

  • 学習教材やサンプルコードが豊富で、困ったときに検索しやすい

  • Jupyter Notebookとの組み合わせがめちゃくちゃ使いやすい

あと、データ量が少ない・軽い処理ならPandasで全然問題ないですし、書きやすさや親しみやすさではやっぱりPandasが定番だな〜って思います。
Polarsはちょっと慣れが必要なので、「両方使い分ける」のが今の私のスタイルです。

 

まとめ:使い分けが重要かな?

今回はデータサイエンティスト的な視点から、PandasとPolarsの使用感の違いについて書いてみました。

どっちが正解とかじゃなくて、「どういうときに、どっちが気持ちよく使えるか」で都度選ぶのがいいかな~と思っています。


私の場合は、

  • 軽い前処理や可視化 → Pandas

  • 大量データの前処理や集計 → Polars

っていう感じで選んでます。

 

前処理のそれぞれのテクニックに関しては、こちらの本がとても参考になりました。

Polarsの解説書がまだまだ少ない中でかなり有益な情報があったと感じます。私の職場のデータサイエンティストの方もみんな持ってました

 

 

そして、うしろで静かに寝てるうちの猫さんたちは、ツールが何かなんて気にせず、ただキャットタワーの寝心地を楽しんでいるのでした・・・😸

/たまにはゆずって~\
よかったらシェアしてね!
  • URLをコピーしました!
目次