私は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!"))
動作するはずですが、バーには進行状況が正しく表示されず、まだ追加の出力があります。
他のアイデアはありますか?
次を使用できます。
tqdm_notebook().pandas(*args, **kwargs)
これは、tqdm_notebookに遅延アダプターがあるため、メソッド(クラスメソッドを含む)にアクセスする前にインスタンス化する必要があるためです。
将来(> v5.1)、より統一されたAPIを使用できるようになるはずです。
tqdm_pandas(tqdm_notebook, *args, **kwargs)
インポートする必要があることがわかりました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)
私の作業ソリューション( documentation からコピー):
from tqdm.auto import tqdm
tqdm.pandas()