2016-11-07 241 views
10

我在一個jupyter筆記本上用熊貓做了一些分析,由於我的應用函數需要很長時間,所以我希望看到一個進度條。 通過這篇文章here我發現了tqdm庫,它爲pandas operations提供了一個簡單的進度條。 還有一個Jupyter integration,它提供了一個非常好的進度條,其中酒吧本身隨時間變化。如何在jupyter筆記本中使用tqdm和pandas?

但是,我想結合這兩者,並不完全知道如何做到這一點。 我們拿同樣的例子,如文檔

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!")) 

應該工作,但酒吧沒有正確顯示的進展,但還有更多的輸出。

還有其他想法嗎?

+0

似乎有是一個錯誤。我也在經歷它。它適用於groupby progress_apply ...'df.groupby(0).progress_apply(lambda x:x ** 2)' –

+0

@JulienMarrec,我沒有看到它可以與groupby一起使用。我得到一個即時完整的綠色酒吧,然後更新發生在另一個不那麼漂亮的酒吧,更新綠色酒吧下面。 – grinsbaeckchen

+0

是的,我也得到了不那麼漂亮的酒吧,但這一個工程...也許值得通過[GitHub](https://github.com/tqdm/tqdm/issues)標題打開一個問題,如果這裏沒有牽引力在將來 –

回答

6

您可以使用:

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

這是因爲tqdm_notebook有一個延遲適配器,所以訪問其方法(包括類方法)之前,實例化它,它是必要的。

未來(> V5.1),你應該能夠使用更統一的API:

tqdm_pandas(tqdm_notebook, *args, **kwargs) 
+0

謝謝,這解決了這個問題。但是它顯示了兩個條而不是一個,一個有0個迭代,然後是想要的。你知道我可以擺脫嗎? 也許你可以很快將上述例子的用法添加到你的答案中,以便更容易掌握。 – grinsbaeckchen

+0

@grinsbaeckchen這聽起來像是我們在筆記本電腦上使用的一箇舊bug,能否在截圖中報告(https://github.com/tqdm/tqdm/issues),以便我們修復它?謝謝! – gaborous