Maison > développement back-end > Tutoriel Python > Comment puis-je créer efficacement un DataFrame vide pour les données de séries chronologiques avant de le remplir ?

Comment puis-je créer efficacement un DataFrame vide pour les données de séries chronologiques avant de le remplir ?

Mary-Kate Olsen
Libérer: 2024-12-08 01:43:12
original
767 Les gens l'ont consulté

How Can I Efficiently Create an Empty DataFrame for Time-Series Data Before Filling It?

Énigme : créer une structure de données vide

Vous aspirez à construire un DataFrame et à le remplir ensuite de données de séries chronologiques. Au départ, vous imaginez un DataFrame vide meublé de colonnes et d'horodatages spécifiques, tous ornés de zéros ou de valeurs NaN.

Approche actuelle : une solution inélégante

Votre code actuel s'initialise un DataFrame avec des colonnes entièrement nulles et des lignes d'horodatage avant de parcourir les données pour calculer de nouvelles valeurs. Bien que cette approche remplisse son objectif, elle semble lourde et suggère l'existence d'une solution plus efficace.

Solution privilégiée : Accumuler des données dans une liste

Pour optimiser ce processus , il est prudent d'éviter la croissance par ligne dans le DataFrame. Au lieu de cela, accumulez les données dans une liste, puis initialisez un DataFrame une fois la collecte des données terminée. Les listes sont plus légères, consomment moins de mémoire et facilitent l'inférence automatique de types et l'attribution d'index.

data = []
for row in some_function_that_yields_data():
    data.append(row)

df = pd.DataFrame(data)
Copier après la connexion

Avantages de l'accumulation dans une liste

  • Efficacité de calcul améliorée : Ajouter à une liste et créer un DataFrame en une seule fois est nettement plus rapide que s'ajoute de manière itérative à un DataFrame vide.
  • Optimisation de la mémoire : Les listes occupent moins de mémoire et sont plus faciles à ajouter et à manipuler.
  • Inférence automatique de types : Le constructeur DataFrame déduit automatiquement les types en fonction des données ajouté.
  • Création d'index synchronisé : Un RangeIndex est automatiquement généré pour le DataFrame résultant.

Méthodes obsolètes à éviter

Certaines pratiques, répandues chez les utilisateurs novices, sont à éviter en raison de leur inefficacité et nuances :

  • Append ou Concat itératif : Cette approche souffre de complexité quadratique et de problèmes de type de données.
  • ajout via loc : Ajout l'utilisation de loc entraîne les mêmes problèmes de réallocation de mémoire que l'itération append.
  • DataFrame vide de NaN : La création d'un DataFrame avec des valeurs NaN entraîne des colonnes d'objets, ce qui complique les opérations de données. Il est préférable d'allouer la mémoire une fois à l'avance pour éviter la fragmentation de la mémoire.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal