Création de DataFrames vides : une comparaison des approches
La méthode traditionnelle consistant à créer un DataFrame pandas vide et à le remplir progressivement peut être inefficace et mémoire -intensif. Une approche plus optimale consiste à accumuler des données dans une liste et à les convertir en DataFrame si nécessaire.
Avantages de l'accumulation de liste :
-
Efficacité de la mémoire : Les listes sont des structures de données légères qui consomment moins de mémoire que DataFrames.
-
Performance : L'ajout à une liste est nettement plus rapide que l'ajout répété à un DataFrame.
-
Inférence automatique du type de données : Lorsque la liste est converti en DataFrame, les pandas détermineront automatiquement les types de données appropriés.
-
Index automatique création : Un RangeIndex est automatiquement créé pour les données, éliminant ainsi le besoin d'attribution manuelle d'index.
Exemple de code pour l'accumulation de liste :
data = []
for row in some_function_that_yields_data():
data.append(row)
df = pd.DataFrame(data)
Approches prudentes Évitez :
-
Ajout itératif à un DataFrame : Évitez d'utiliser df.append ou pd.concat dans une boucle pour des raisons de performances. Cette approche conduit à des opérations de complexité quadratique.
-
Utilisation de loc dans une boucle : L'ajout à l'aide de df.loc[len(df)] entraîne également une allocation de mémoire inefficace.
- DataFrame vide de NaN : La création d'un DataFrame rempli de NaN peut créer des colonnes d'objets, ce qui peut gêner performances.
Résultats de référence :
Les résultats de référence démontrent que l'accumulation de liste est nettement plus rapide que la méthode traditionnelle d'ajout itératif. À mesure que le DataFrame grandit, la différence de temps devient plus prononcée.
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: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