【Python】進捗表示(プログレスバー)で使えるtqdm(tqdm.tqdm)

Python

本記事は、Pythonの繰り返し処理for文で進捗状態を表示できる「tqdm」について紹介いたします。

私自身データサイエンティストとして業務を行なっていますが、Pythonでの処理が多く、かつデータ量も多かったりするので、そんなときにこの「tqdm」で進捗を表示しながら作業時間/処理時間の見立てを立てながら作業しています。

本記事も、tqdmで進捗が簡単に把握できるので、処理待ちの間に作成していたりします。

該当コード

まずはpip installを忘れずに

!pip install tqdm
# ノートブックでない場合は「!」を外してください

まずは初期設定関係

import pandas as pd
from tqdm import tqdm

df = pd.read_csv('data.csv')

シンプルな使い方

for index, row in tqdm(df.iterrows()): # 最も伝えたい行はこの行
    if row["dummy"] == 0:
        break

全体に対してどれくらいの進捗か把握したい時

for index, row in tqdm(df.iterrows(), total=len(df)): # 最も伝えたい行はこの行
    if row["dummy"] == 0:
        break

やむを得ずfor文の中にfor文を書く際に、変にならない方法

for some in tqdm(category_list, total=len(category_list)):
  for index, row in tqdm(df.iterrows(), total=len(df), leave=False): # 最も伝えたい行はこの行
    pass

解説

シンプルな処理、全体とそのうちどれだけ処理が進んだか、やむを得ずfor文の中にfor文を書く場合に汚くならないようにする書き方を紹介しました。

  • シンプルな処理

一般的に、for文のinの後に続く変数(もしくは処理)をtqdm()で囲めば、基本的にOKです。長めのfor文を書く際は、tqdm()で囲む癖をつければ、意図せず時間がかかってしまうことが早くわかるようになります。そうすれば、処理を強制終了して、書き換えたりなどするのも良いでしょう。
とにかく、tqdm()で囲むように癖をつけると良いです。私自身の経験からもオススメします。

  • tqdm()内に「total=len(df)」をつける

全体のlen(df)のうち、どれだけ処理をしたかを表示できます。注意点としては、totalが受け取れるのは数値です。そのため、本当に全体の数字でなくても受け取ってしまうことです。 totalに間違った数字を入れてしまうと、処理時間を読み違えてしまうので、注意が必要です。

  • tqdmを使ったfor文を重ねる場合のテクニック

一番外側を除いて、内側のfor文のtqdmに「leave=False」を付けることで、内側の処理が1周したらそのプログレスバーが消えて、新たに進捗を表示するプログレスバーを表示します。
つまり、tqdmを使ったfor文を重ねた処理のプログレスバーを綺麗に表示することができるということです。

参照サイト

グレートなtqdmの使い方 - Qiita
本記事は Python3.6 以上を想定しています.Pythonで何かしら時間のかかる処理をする際にプログレスバーを表示するのに便利なライブラリとして tqdm というものが存在します.tqdm…
tqdmの使い方を自分なりにまとめてみた - Qiita
なぜtqdmを使うのか?それは便利だから!深層学習における進捗状況や処理状況を表示させるときに便利実行にかかるおおよその時間を知ることが出来る流れライブラリのインポートtqdmを使ってみるプログレスバーに情報を加え…
tqdm.tqdm - tqdm documentation
A Fast, Extensible Progress Meter
https://github.com/tqdm/tqdm

まとめ

以上となります。

冒頭でも書きましたが、for文の処理の進捗を可視化して、作業時間や処理時間の見立てをつけることは非常に重要です。数万行を越えてくるようなデータフレームに対して処理をする場合などは、必ずtqdmをつけて処理したほうが良いです。これは経験上良いと感じています。

一つのルーティンとして、tqdm()をつけるのであれば、本記事にて紹介している、オプション程度をつける程度で、スッキリかつ見やすいプログレスバーになると思います。

進捗を把握するだけならアレンジしたプログレスバーにしなくても良いと思い、上記の紹介に留めています。もっとオシャレにということであれば、参照記事などから覗いてみてください!

サイト内関連記事

データサイエンティストの書評ブログ
趣味が読書くらいしかない駆け出しデータサイエンティストの書評ブログです。日々の勉強のアウトプットや趣味の読書のおすすめをしていきます。

転職・スキルアップはこちらからどうぞ

オススメ転職はこちらからどうぞ
オススメのスキルアップはこちらからどうぞ

コメント

タイトルとURLをコピーしました