LoginSignup
11
20

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-08-18

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

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

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

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

進捗確認Tips

まず下準備

import time

1. printで処理ごとに表示

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

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

▼ JupyterNotebook
スクリーンショット 2018-08-18 22.39.48.png

2. tpdmを使う

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

from tqdm import tqdm

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

▼ JupyterNotebook
スクリーンショット 2018-08-18 22.39.29.png

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
スクリーンショット_2018-08-19_13_10_30.png

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
スクリーンショット 2018-08-18 22.50.26.png

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

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

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

▼ JupyterNotebook
スクリーンショット 2018-08-18 22.56.51.png
予想...(この処理で1秒ぐらい...全体で10秒ほどかな...?)

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

順次更新予定です!

11
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
20