"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi devriez-vous toujours copier les DataFrames Pandas lors de la sélection de sous-ensembles ?

Pourquoi devriez-vous toujours copier les DataFrames Pandas lors de la sélection de sous-ensembles ?

Publié le 2024-11-19
Parcourir:356

Why Should You Always Copy Pandas DataFrames When Selecting Subsets?

Comprendre l'importance de la copie de blocs de données dans Pandas

Dans Pandas, lors de la sélection d'une partie d'un bloc de données, il est courant d'utiliser le '.copy() ' méthode pour créer une copie du bloc de données d'origine. Cette approche garantit que toute modification apportée au sous-ensemble n'affectera pas le bloc de données parent.

Pourquoi faire une copie ?

Par défaut, l'indexation d'un bloc de données renvoie un vue du bloc de données d'origine, plutôt qu'une copie. Cela signifie que toute modification apportée au sous-ensemble aura un impact direct sur la trame de données parent. Pour maintenir l'intégrité du bloc de données parent, il est essentiel de créer une copie à l'aide de la méthode « .copy() ».

Conséquences de la non-copie

Considérez les extrait de code suivant :

df = pd.DataFrame({'x': [1, 2]})
df_sub = df.iloc[0:1]
df_sub.x = -1

Dans cet exemple, df_sub est une vue de df. Par conséquent, définir df_sub.x sur -1 modifie également df.x:

print(df)
   x
0 -1
1  2

Avantages de la copie

La copie de blocs de données garantit que le bloc de données parent reste intact. Ceci est particulièrement important lorsque plusieurs opérations sont effectuées sur une trame de données et il est crucial de conserver les données originales pour une analyse ou une comparaison ultérieure.

df_sub_copy = df.iloc[0:1].copy()
df_sub_copy.x = -1

print(df)
   x
0  1
1  2

Dans cet extrait de code modifié, df_sub_copy est une copie de df. Par conséquent, la modification de df_sub_copy.x n'a aucun impact sur df.

Remarque : Il est important de noter que le comportement de l'indexation des trames de données a changé dans les versions plus récentes de Pandas. Dans Pandas 1.0 et versions antérieures, l'indexation d'un bloc de données renvoie une copie par défaut. Cependant, dans Pandas 1.1 et versions ultérieures, l'indexation renvoie une vue. Pour garantir un comportement cohérent entre les versions, il est recommandé de toujours utiliser la méthode « .copy() » lors de la création de sous-ensembles de blocs de données.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3