現地参加したPyCon JP 2022のセッションのまとめ3本目です。
今回は、Day1の「Pandas卒業?大規模データを様々なパッケージで高速処理してみる」です。
動画
スライド
スピーカー
- fujineさん
- みずほリサーチ&テクノロジーズ株式会社
- 先端技術研究部
- データ分析、クラウド(AWS、GCP)の技術研究に従事
- みずほリサーチ&テクノロジーズ株式会社
内容まとめ
- 大規模データを扱うパッケージとしてPandasが代表的ですが、他のパッケージについて解説
背景
- Pandasは超便利だが、大きいデータにはスケールしにくいというデメリットがある
- シングルスレッド
- CPUコアが何十個あっても、基本1コアしか使用しない
- インメモリ処理
- データ規模が大きいとファイル読込すら失敗
- シングルスレッド
- そこで、以下4つのパッケージを試してみた
- Pandas
- dask
- vaex
- Spark
Pandas
- 大規模データを扱うパッケージのdefect standard
- 小~中規模(1000万)のデータ件数なら、十分有用
- テーブル結合は、mergeよりjoinの方が高速
Dask
- タスクグラフによる並列処理を行う
- Pandasと(ほぼ)同じAPIで、Pandasより大規模なデータを処理できる
- テーブル結合は、joinよりmergeの方が高速
Vaex
- APIがPandasと異なる
- 処理速度が早い
PySpqrk
- 低メモリでのデータ処理に有効
- 処理時間はPandasとあまり変わらない
- SparkやSQLに慣れてる人向け
それでもPandasを使いたいあなたに
- evalで並列化
- 数式に近い形で記述でき、可読性の面でも恩恵あり
- numexprインストールを忘れずに!
- Pandas統合の並列処理パッケージを使用
-
apply/map
の並列化に有効
-
感想
- Pandasに限らず、defect standardになっているツールにはdefect standardになっている理由があると思いますが、それだけでは対応しきれないことは往々にして起こると思います。
- その時に他のツールの特性も把握した上で選択肢を持っておくのは、大事だなと思いました。