JupyterNotebook プログレスバー・進捗確認Tips


私は営業ですが、提案材料や各数値の分析でJupyterNotebookを使うことがあります。

スクレイピングする時なんかは進捗具合が分かると作業が楽になるので、確認の方法をまとめておきます。

エンジニアの方だと当たり前すぎる内容だと思いますが、非エンジニアだとプログレスバーという言葉すら知らずに触っていると思うのでご参考まで。

他にいいやり方があれば、是非教えて下さい!

進捗確認Tips

まず下準備

import time

1. printで処理ごとに表示

僕のような初学者はこれで十分かもしれません。笑

for i in range(100):
    time.sleep(0.1)
    if i % 10 == 0:
        print(i)

▼ JupyterNotebook

2. tpdmを使う

tqdmが一番使われているプログレスバーかと思いますが(知らんけど)、range部にtqdm()します。
ノーマルのものとリッチなものを、2つ紹介。

from tqdm import tqdm

for i in tqdm(range(100)):
    time.sleep(0.1)

▼ JupyterNotebook

from tqdm import tqdm_notebook as tqdm

for i in tqdm(range(100),desc='進捗具合', leave=False):
    time.sleep(0.1)

desc='進捗具合', leave=False このオプションでラベル付けと、処理が終わった時にプログレスバーが非表示になります。

その他オプションは、画像つきのコチラで見れます。
https://github.com/tqdm/tqdm/tree/master/images

▼ JupyterNotebook

3. FloatProgressを使う

FloatProgressは、min-maxで枠を作って、valueでiずつ動かしてdisplayで表示しているので、ちょっとめんどくさい。

色を変えたり、その他引数はコチラを参照。
https://ipywidgets.readthedocs.io/en/latest/examples/Widget%20List.html

from IPython.html.widgets import FloatProgress
from IPython.display import display

fp = FloatProgress(min=0, max=100, description='進捗具合:')
display(fp)

for i in range(100):
    time.sleep(0.1)
    fp.value = i

▼ JupyterNotebook

4. 分割した処理の時間を計算して、目安時間を出す

これはちょっと色が違いますが、マジックコマンドで1/10ぐらいに分割した処理の時間を測って、おおよその全体時間を予想する。

%%timeit
for i in range(10): #1/10の処理
    time.sleep(0.1)

▼ JupyterNotebook

予想...(この処理で1秒ぐらい...全体で10秒ほどかな...?)

※マジックコマンドについてはこちらの記事を参考にさせていただきました。
http://www.procrasist.com/entry/6-jupyter

順次更新予定です!