Comment utiliser tqdm avec pandas dans un carnet jupyter?

je fais quelques analyses avec pandas dans un carnet jupyter et comme ma fonction appliquer prend beaucoup de temps, j'aimerais voir une barre de progression. Par le biais de ce post ici j'ai trouvé la bibliothèque tqdm qui fournit une barre de progression simple pour pandas opérations. Il y a aussi un intégration de Jupyter cela fournit une barre de progrès vraiment agréable où la barre elle-même change avec le temps.

cependant, je voudrais combiner les deux et ne pas tout à fait obtenir comment le faire. Prenons le même exemple que dans la documentation

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)

il est même dit "peut utiliser' tqdm_notebook '" mais je ne trouve pas le moyen. J'ai essayé quelques petites choses comme

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

ou

tqdm_notebook.pandas

mais ils ne fonctionnent pas. Dans le définition il me semble

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

devrait fonctionner, mais la barre ne montre pas correctement la progression et il y a encore des sorties supplémentaires.

Tout les autres des idées?

12
demandé sur Community 2016-11-08 02:47:27

1 réponses

Vous pouvez utiliser:

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

c'est parce que tqdm_notebook a un adaptateur delayer, il est donc nécessaire de l'instancier avant d'accéder à ses méthodes (y compris les méthodes de classe).

dans le futur (>v5.1), vous devriez pouvoir utiliser une API plus uniforme:

tqdm_pandas(tqdm_notebook, *args, **kwargs)
9
répondu gaborous 2016-12-29 13:44:20