web-dev-qa-db-fra.com

Utiliser la barre de progression TQDM avec les pandas

Est-il possible d'utiliser la barre de progression TQDM lors de l'importation et de l'indexation de jeux de données volumineux à l'aide de pandas?

Voici un exemple de données de 5 minutes que j'importe, indexant et utilisant to_datetime. Cela prend un certain temps et il serait agréable de voir une barre de progression.

#Import csv files into a Pandas dataframes and convert to Pandas datetime and set to index

eurusd_ask = pd.read_csv('EURUSD_Candlestick_5_m_ASK_01.01.2012-05.08.2017.csv')
eurusd_ask.index = pd.to_datetime(eurusd_ask.pop('Gmt time'))
5
sslack88

Trouvez la longueur en vous mettant en forme

for index, row in tqdm(df.iterrows(), total=df.shape[0]):
   print("index",index)
   print("row",row)
12
Arjun Kava

J'ai utilisé quelque chose comme ceci lors de l'itération de lignes Dataframe.

    with tqdm(total=len(list(Df.iterrows()))) as pbar:
        for index, row in Df.iterrows():
                pbar.update(1)

Pas le meilleur mais cela fonctionne jusqu'à ce qu'ils résolvent le problème avec les pandas.

5
sonance207

Il existe une solution de contournement pour tqdm> 4.24 . Selon https://github.com/tqdm/tqdm#pandas-integration :

    from tqdm import tqdm

    # 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!")
    eurusd_ask['t_stamp'] = eurusd_ask['Gmt time'].progress_apply(lambda x: pd.Timestamp)
    eurusd_ask.set_index(['t_stamp'], inplace=True)
1
Zeke Arneodo

Vous pouvez remplir un cadre de données de pandas ligne par ligne en lisant le fichier normalement et simplement ajouter chaque nouvelle ligne en tant que nouvelle ligne au cadre de données, bien que cela soit un peu plus lent que l'utilisation de méthodes de lecture propres à Pandas.

0
ZeerakW