pandasでvalue_coutnsを4万行に適応しようとしたら5時間かかる見込みになったので、どうにか高速化できないかと思い調べたらcuDFというものがありました。
cuDFとは、NVIDIAが開発したオープンソースのデータ分析と機械学習のためのプラットフォーム(RAPIDS)から提供されています。Pandasに似たAPIを提供するGPU上で動作するデータフレームライブラリで、データの操作や変換を高速に行うことができます。
結果として、5時間が15分に短縮できました✌️
実行方法
Colaboratoryを開き、「編集」 > 「ノートブックの設定」からGPUを選択します。
次にcuDFをインストールします。
!pip install cudf-cu11 --extra-index-url=https://pypi.nvidia.com
実行結果にErrorが出ますが、気にせずランタイムの再起動をします。
再起動は「ランタイム」 > 「ランタイムの再起動」からできます。
import cudf
cudf = cudf.from_pandas(df)
これでデータフレームをcuDFに変換できます。
あとはこのcudfで操作を実行することで爆速実行できます。
ほとんどpandasと同じように操作できますが、一部互換性のないところもあるので適宜コードを改変する必要があります。
進捗状況の確認
from tqdm.notebook import tqdm
tqdm.pandas()
for i in tqdm(100, total=100):
# ここにpandasの処理
tqdmを使うことでプログレスバーを表示できます。おおよその終了時間も出るので、実行時間の目安になります。