Pandasでプログレスバーを出したい(tqdmを用いる)
分析でPandasを用いる場合、
量の多い行列方向の処理をしたいときに進捗を可視化したいことがあります。
Pythonのforループでプログレスバーを出すのにはtqdmを用いますが、
pandasでも同様にtqdmを用いることができます。
| pandasのメソッド | プログレスバーを出すtqdmメソッド |
|---|---|
| apply | progress_apply |
| applymap | progress_map |
セットアップ
import pandas as pd from tqdm import tqdm #セットアップ tqdm.pandas()
applyへの使い方
使い方は普通のapplyと同様です。
df = pd.DataFrame(
[
[1,2],
[1,2],
[1,2]
],
columns = ['a','b']
)
#列単位の集計:axis=0
#処理された列数が進捗
df.progress_apply(sum,axis=0)
#出力
#100%|██████████| 2/2 [00:00<00:00, 395.17it/s]
#行単位の集計:axis=1
#処理された行数が進捗
df.progress_apply(sum,axis=1)
#出力
#100%|██████████| 3/3 [00:00<00:00, 414.95it/s]
出力を見ると分かる通り、一つ目(axis=0)は2列処理しています。
二つ目は3行分です。
applymapへの使い方
各カラムに対して処理をするapplymapはprogress_mapを用います。
df.progress_map(lambda x : x**2)
注意点として、progress_mapはapply_mapの置き換えで、pandasの文字列の置き換えに使うmapの置き換えではありません。