Maison >développement back-end >Tutoriel Python >Pourquoi devrais-je utiliser .copy() lors de la sélection de sous-ensembles de DataFrames Pandas ?
Scénario :
Lors de la sélection d'un sous-ensemble d'un DataFrame, il est courant pour rencontrer du code qui fait explicitement une copie du DataFrame parent à l'aide de la méthode .copy(). La question se pose : pourquoi est-ce nécessaire ?
Raisonnement :
Les dataframes Pandas se comportent différemment des tableaux de langages de programmation traditionnels. Lors de l'indexation d'un DataFrame pandas (par exemple, my_dataframe[features_list]), la valeur renvoyée ne crée pas de nouvelle copie mais renvoie plutôt une vue ou une référence au DataFrame d'origine. Toute modification apportée à cette vue affectera directement le DataFrame d'origine.
Exemple :
Considérez le code suivant :
df = pd.DataFrame({'x': [1, 2]}) df_view = df[0:1] # Returns a view of the first row df_view['x'] = -1 # Check the original DataFrame print(df)
Sortie :
x 0 -1 1 2
Comme vous pouvez le constater, la modification de df_view a également modifié le df DataFrame d'origine.
Solution :
Pour éviter de telles conséquences involontaires, il est recommandé pour faire une copie du DataFrame à l'aide de la méthode .copy() avant de le modifier. Cela garantit que toute modification apportée à la copie n'affectera pas le DataFrame d'origine.
Code révisé :
df = pd.DataFrame({'x': [1, 2]}) df_copy = df[0:1].copy() # Makes a copy of the first row df_copy['x'] = -1 # Check the original DataFrame print(df)
Sortie :
x 0 1 1 2
Dans ce cas, df reste inchangé.
Avantages de la copie de trames de données :
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!