Maison > développement back-end > Tutoriel Python > Pourquoi la concaténation de nombreux DataFrames Pandas est-elle exponentiellement lente et comment puis-je l'éviter ?

Pourquoi la concaténation de nombreux DataFrames Pandas est-elle exponentiellement lente et comment puis-je l'éviter ?

DDD
Libérer: 2024-12-20 03:38:13
original
831 Les gens l'ont consulté

Why is Concatenating Many Pandas DataFrames Exponentially Slow, and How Can I Avoid It?

Concaténation exponentiellement lente des DataFrames

Lorsque vous travaillez avec de grands ensembles de données, il est courant de partitionner les données en morceaux plus petits pour un traitement efficace. Cependant, la concaténation de ces morceaux peut devenir exponentiellement plus lente à mesure que le nombre de morceaux augmente.

Cause du ralentissement

Le ralentissement est attribué à la façon dont pd.concat() est mise en œuvre. Lorsqu'il est appelé dans une boucle, il crée un nouveau DataFrame pour chaque concaténation, ce qui entraîne une copie substantielle des données. Ce coût de copie augmente quadratiquement avec le nombre d'itérations, conduisant à l'augmentation exponentielle observée du temps de traitement.

Éviter le ralentissement

Pour contourner ce goulot d'étranglement des performances, il est crucial pour éviter d'appeler pd.concat() dans une boucle for. Au lieu de cela, stockez les morceaux dans une liste et concaténez-les tous en même temps après le traitement :

super_x = []
for i, df_chunk in enumerate(df_list):
    [x, y] = preprocess_data(df_chunk)
    super_x.append(x)
super_x = pd.concat(super_x, axis=0)
Copier après la connexion

Grâce à cette approche, la copie n'a lieu qu'une seule fois, ce qui réduit considérablement le temps de traitement global.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal