Comment (et pourquoi) faire une copie de Pandas DataFrame



Chaque fois que vous créez un sous-ensemble d’un DataFrame pandas, puis modifiez le sous-ensemble, le DataFrame d’origine sera également modifié.

Pour cette raison, c’est toujours une bonne idée d’utiliser .copy() lors du sous-ensemble afin que les modifications que vous apportez au sous-ensemble ne soient pas également apportées au DataFrame d’origine.

Les exemples suivants montrent comment (et pourquoi) faire une copie d’un DataFrame pandas lors d’un sous-ensemble.

Exemple 1 : sous-ensemble d’un DataFrame sans copie

Supposons que nous ayons le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
                   'points': [18, 22, 19, 14, 14, 11, 20, 28],
                   'assists': [5, 7, 7, 9, 12, 9, 9, 4]})

#view DataFrame
print(df)

  team  points  assists
0    A      18        5
1    B      22        7
2    C      19        7
3    D      14        9
4    E      14       12
5    F      11        9
6    G      20        9
7    H      28        4

Supposons maintenant que nous créions un sous-ensemble contenant uniquement les quatre premières lignes du DataFrame d’origine :

#define subsetted DataFrame
df_subset = df[0:4]

#view subsetted DataFrame
print(df_subset)

  team  points  assists  rebounds
0    A      18        5        11
1    B      22        7         8
2    C      19        7        10
3    D      14        9         6

Si nous modifions l’une des valeurs du sous-ensemble, la valeur du DataFrame d’origine sera également modifiée :

#change first value in team column
df_subset.team[0] = 'X'

#view subsetted DataFrame
print(df_subset)

  team  points  assists
0    X      18        5
1    B      22        7
2    C      19        7
3    D      14        9

#view original DataFrame
print(df)

  team  points  assists
0    X      18        5
1    B      22        7
2    C      19        7
3    D      14        9
4    E      14       12
5    F      11        9
6    G      20        9
7    H      28        4

Notez que la première valeur de la colonne d’équipe a été modifiée de « A » à « X » à la fois dans le DataFrame sous-ensemble et dans le DataFrame d’origine.

C’est parce que nous n’avons pas fait de copie du DataFrame original.

Exemple 2 : sous-ensemble d’un DataFrame avec copie

Supposons encore une fois que nous ayons le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
                   'points': [18, 22, 19, 14, 14, 11, 20, 28],
                   'assists': [5, 7, 7, 9, 12, 9, 9, 4]})

#view DataFrame
print(df)

  team  points  assists
0    A      18        5
1    B      22        7
2    C      19        7
3    D      14        9
4    E      14       12
5    F      11        9
6    G      20        9
7    H      28        4

Supposons encore une fois que nous créons un sous-ensemble qui contient uniquement les quatre premières lignes du DataFrame d’origine, mais cette fois nous utilisons .copy() pour faire une copie du DataFrame d’origine :

#define subsetted DataFrame
df_subset = df[0:4].copy()

Supposons maintenant que nous modifions la première valeur de la colonne équipe du DataFrame sous-ensemble :

#change first value in team column
df_subset.team[0] = 'X'

#view subsetted DataFrame
print(df_subset)

  team  points  assists
0    X      18        5
1    B      22        7
2    C      19        7
3    D      14        9

#view original DataFrame
print(df)

  team  points  assists
0    A      18        5
1    B      22        7
2    C      19        7
3    D      14        9
4    E      14       12
5    F      11        9
6    G      20        9
7    H      28        4

Notez que la première valeur de la colonne d’équipe a été modifiée de « A » à « X » uniquement dans le sous-ensemble DataFrame.

Le DataFrame d’origine reste intact puisque nous avons utilisé .copy() pour en faire une copie lors de la création du sous-ensemble.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :

Comment supprimer des lignes dans Pandas DataFrame en fonction de la condition
Comment filtrer un DataFrame Pandas sur plusieurs conditions
Comment utiliser le filtre « NON IN » dans Pandas DataFrame

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *