Comment puis-je optimiser le bouclage DataFrame pour l'analyse séquentielle dans Pandas ?

Patricia Arquette
Libérer: 2024-11-14 18:41:02
original
631 Les gens l'ont consulté

How Can I Optimize DataFrame Looping for Sequential Analysis in Pandas?

Optimisation du bouclage de trames de données pour l'analyse séquentielle

Lorsque vous travaillez avec des trames de données dans Pandas, un bouclage efficace est crucial pour effectuer des opérations complexes sur de grands ensembles de données. Parcourir manuellement chaque ligne, comme le montre l'exemple fourni, peut prendre du temps et consommer beaucoup de mémoire.

La fonction Iterrows()

Heureusement, les versions plus récentes des pandas offrent une fonction intégrée spécialement conçue pour une itération efficace des trames de données : iterrows(). Cette fonction renvoie un itérateur qui génère un tuple contenant l'index de la ligne et un objet pandas Series représentant les valeurs de la ligne :

for index, row in df.iterrows():
    date = row['Date']
    open, high, low, close, adjclose = row[['Open', 'High', 'Low', 'Close', 'Adj Close']]
    # Perform analysis on open/close based on date
Copier après la connexion

Utilisation des fonctions Numpy

Cependant, si la vitesse est primordiale, l'utilisation des fonctions numpy peut être encore plus rapide que la boucle sur les lignes. Numpy fournit des opérations vectorisées qui peuvent effectuer des calculs sur des colonnes entières à la fois, réduisant considérablement la surcharge associée à l'itération sur des lignes individuelles.

Par exemple, pour calculer la variation en pourcentage des prix de clôture :

import numpy as np
close_change = np.diff(df['Close']) / df['Close'][1:] * 100
Copier après la connexion

Optimisation de la mémoire

Pour optimiser l'utilisation de la mémoire lors de l'itération sur de grandes trames de données, envisagez d'utiliser la méthode itertuples() au lieu de iterrows(). Cette méthode renvoie un itérateur qui génère un objet nommé tuple, réduisant ainsi la consommation de mémoire en évitant la création d'objets série pandas :

for row in df.itertuples():
    date = row.Date
    open, high, low, close, adjclose = row.Open, row.High, row.Low, row.Close, row.Adj_Close
    # Perform analysis on open/close based on date
Copier après la connexion

En tirant parti de ces techniques de bouclage optimisées, vous pouvez améliorer considérablement les performances et l'efficacité de la mémoire de votre analyse des données financières.

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