分析で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
の置き換えではありません。