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'))
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)
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.
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)
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.