1. ホーム
  2. python

[解決済み] jupyter notebookでtqdmとpandasを使うには?

2022-03-07 09:16:36

質問

jupyter notebookでpandasを使って解析しているのですが、apply関数に時間がかかるのでプログレスバーを表示させたいです。 この投稿を通して こちら に簡単なプログレスバーを提供するtqdmライブラリを見つけました。 パンダの操作 . また Jupyterとの連携 は、バー自体が時間と共に変化する、とても素晴らしいプログレスバーを提供します。

しかし、この2つを組み合わせたいのですが、どうすればいいのかよくわかりません。 ドキュメントにあるのと同じ例で考えてみましょう。

import pandas as pd
import numpy as np
from tqdm import tqdm

df = pd.DataFrame(np.random.randint(0, 100, (100000, 6)))

# Register `pandas.progress_apply` and `pandas.Series.map_apply` with `tqdm`
# (can use `tqdm_gui`, `tqdm_notebook`, optional kwargs, etc.)
tqdm.pandas(desc="my bar!")

# Now you can use `progress_apply` instead of `apply`
# and `progress_map` instead of `map`
df.progress_apply(lambda x: x**2)
# can also groupby:
# df.groupby(0).progress_apply(lambda x: x**2)

tqdm_notebook'を使用することができますと書かれていますが、どのように使用するのかわかりません。 私は次のようないくつかのことを試してみました。

tqdm_notebook(tqdm.pandas(desc="my bar!"))

または

tqdm_notebook.pandas

が、うまくいきません。 での 定義 のように見えます。

tqdm.pandas(tqdm_notebook(desc="my bar!"))

は動作するはずですが、バーが適切に進捗を表示せず、追加の出力が残っています。

他にアイデアがあれば教えてください。

解決方法は?

使用することができます。

tqdm_notebook().pandas(*args, **kwargs)

これは、tqdm_notebook がディレイヤーアダプターを持っているので、そのメソッド(クラスメソッドを含む)にアクセスする前にインスタンス化する必要があるためです。

将来(>v5.1)には、もっと統一されたAPIを使えるようになるはずです。

tqdm_pandas(tqdm_notebook, *args, **kwargs)