Créer et remplir un DataFrame Pandas vide
Conceptuellement, on peut vouloir commencer par créer un DataFrame vide, puis le remplir progressivement avec des valeurs . Cependant, cette approche est inefficace et susceptible de provoquer des problèmes de performances.
Les pièges de la croissance d'un DataFrame par ligne
L'ajout itératif de lignes à un DataFrame vide est coûteux en termes de calcul. . Cela conduit à des opérations de complexité quadratique en raison de l’allocation dynamique de mémoire et de la réaffectation requise. Cela peut avoir un impact important sur les performances, en particulier lorsqu'il s'agit de grands ensembles de données.
Une approche alternative : accumuler des données dans une liste
Au lieu de développer un DataFrame par ligne, il est Il est recommandé d'accumuler les données dans une liste. Cela présente plusieurs avantages :
Création d'un DataFrame à partir d'une liste
Une fois les données accumulées dans une liste, un DataFrame peut être facilement créé en convertissant la liste à l'aide de pd .DataFrame(). Cela garantit une inférence appropriée du type de données et automatise la définition d'un RangeIndex pour le DataFrame.
Exemple
Considérez le scénario décrit dans la question. Le code suivant montre comment accumuler des données dans une liste, puis créer un DataFrame :
import pandas as pd data = [] dates = [pd.to_datetime(f"2023-08-{day}") for day in range(10, 0, -1)] valdict = {'A': [], 'B': [], 'C': []} # Initialize symbol value lists for date in dates: for symbol in valdict: if date == dates[0]: valdict[symbol].append(0) else: valdict[symbol].append(1 + valdict[symbol][-1]) # Create a DataFrame from the accumulated data df = pd.DataFrame(valdict, index=dates)
Cette approche garantit une accumulation efficace des données et une création transparente de DataFrame sans aucune surcharge de performances ni soucis concernant les colonnes d'objets.
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!