ここでは、tqdmを用いたプログレスバーでの進捗状況の可視化について解説しています。
この記事の対象
Tqdmのインストール
「tqdm」は外部ライブラリです。準備として、以下をインストールします。
$ pip install tqdm
目的
大量のデータを操作する際、どのくらいの進捗状況なのか知りたいときに使用しました。
以下のプログラムは、pandasで複数のcsvファイルを読み込んだ時に可視化したものになります。
プログラム
デフォルトのtqdm
from tqdm import tqdm
import time
import glob
import pandas as pd
#1---フォルダ内のCSVファイルの一覧を取得
files = sorted(glob.glob('*.csv'))
#2---ファイル数を取得
file_number = len(files)
#3---CSVファイルの中身を読み出して、リスト形式にまとめる
csv_list = []
for file in tqdm(files):
csv_list.append(pd.read_csv(file,encoding='shift_jis',skiprows=[1]))
time.sleep(1)
#100%|█████████████████████████████████████████████████████| 11/11 [00:11<00:00, 1.03s/it]
上記のプログラムで、進捗状況を知りたかったのはデータの読み込みの進捗状況でした。
よって、ここではfor構文で使用しました。
プログレスバーの説明設定 ⇒ desc
from tqdm import tqdm
import time
for i in tqdm(range(100), desc="Going"):
time.sleep(1)
プログレスバーに名前を設定して説明する事も可能です。使用する際は引数に「desc」を設定するだけです。
結果
#Going: 90%|██████████████████████████████████████████████████████████████████▌ | 90/100 [01:31<00:10, 1.01s/it]
単位表示 ⇒ unit
from tqdm import tqdm
import time
for i in tqdm(range(100), desc="Going",unit='T'):
time.sleep(1)
「unit」を使用すると進捗バーの右側に値の単位を表示できます。
結果
Going: 100%|█████████████████████████████████████████████████████████| 100/100 [01:46<00:00, 1.07s/T]
単位スケール ⇒ unit_scale
from tqdm import tqdm
import time
for i in tqdm(range(100), desc="Going",unit_scale=True):
time.sleep(0.1)
「unit_scale」を True に設定すると、進捗バーの単位を自動的にスケーリングして表示されます。
結果
Going: 100%|█████████████████████████████████████████████████████████| 100/100 [00:10<00:00, 9.80it/s]
動的に変化 ⇒ dynamic_ncols
from tqdm import tqdm
import time
for i in tqdm(range(100), desc="Going",dynamic_ncols=True):
time.sleep(0.1)
「dynamic_ncols」を使用すると、進捗バーの列数が動的に変化します。これにより、ターミナルウィンドウの幅に合わせてバーの表示が調整できます。
色の指定 ⇒ colour
from tqdm import tqdm
import time
for i in tqdm(range(100), desc="Going",colour="red"):
time.sleep(0.1)
「colour」を使用して、進捗バーの色をカスタマイズできます。colourオプションには ANSI カラーコードを指定します。
完了後に残す ⇒ leave
from tqdm import tqdm
import time
for i in tqdm(range(100), desc="Going",leave=True):
time.sleep(0.1)
「leave」をTrueに設定すると、進捗バーが処理完了後も表示されたままになります。これにより、処理終了後の情報が残ります。Falseで完了後は残りません。
最小更新間隔 ⇒ mininterval
from tqdm import tqdm
import time
for i in tqdm(range(100), desc="Going",mininterval=3.0):
time.sleep(0.1)
「mininterval」を使用して、進捗バーの最小更新間隔を設定できます。これにより、更新頻度を制御できます。
まとめ
プログレスバーを用いるときはtqdmを使用することで可視化できます。
大量のデータを操作している際、ほんとに操作できているのか気になるときにプログレスバーを用いるのも有効です。