web-dev-qa-db-ja.com

jupyterノートブックでtqdmをpandasとともに使用するには?

私はjupyterノートブックでpandasを使用していくつかの分析を行っていますが、適用関数に時間がかかるため、進行状況バーを表示したいと思います。この投稿を通して herepandas operations のシンプルなプログレスバーを提供する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

しかし、それらは機能しません。 definition のように見えます

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

動作するはずですが、バーには進行状況が正しく表示されず、まだ追加の出力があります。

他のアイデアはありますか?

16
grinsbaeckchen

次を使用できます。

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

これは、tqdm_notebookに遅延アダプターがあるため、メソッド(クラスメソッドを含む)にアクセスする前にインスタンス化する必要があるためです。

将来(> v5.1)、より統一されたAPIを使用できるようになるはずです。

tqdm_pandas(tqdm_notebook, *args, **kwargs)
12
gaborous

インポートする必要があることがわかりましたtqdm_notebookも。 Jupyterノートブックで機能する簡単な例を以下に示します。

変数に関数をマッピングして、pandasデータフレームに新しい変数を作成したい場合。

# progress bar
from tqdm import tqdm, tqdm_notebook

# instantiate
tqdm.pandas(tqdm_notebook)

# replace map with progress_map
# where df is a pandas dataframe
df['new_variable'] = df['old_variable'].progress_map(some_function)
4
mammykins

私の作業ソリューション( documentation からコピー):

from tqdm.auto import tqdm
tqdm.pandas()
4