Pandas vs Loc : quelle est la différence ?



Lorsqu’il s’agit de sélectionner des lignes et des colonnes d’un DataFrame pandas, .loc et .at sont deux fonctions couramment utilisées.

Voici la subtile différence entre les deux fonctions :

  • .loc peut prendre plusieurs lignes et colonnes comme arguments d’entrée
  • .at ne peut prendre qu’une seule ligne et une colonne comme arguments d’entrée

Les exemples suivants montrent comment utiliser chaque fonction en pratique avec 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],
                   'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
print(df)

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

Exemple 1 : Comment utiliser loc dans Pandas

Le code suivant montre comment utiliser .loc pour accéder à la valeur dans le DataFrame situé à la position d’index 0 de la colonne de points :

#select value located at index position 0 of the points column
df.loc[0, 'points']

18

Cela renvoie une valeur de 18 .

Et le code suivant montre comment utiliser .loc pour accéder aux lignes entre les valeurs d’index 0 et 4 ainsi qu’aux colonnes points et assists :

#select rows between index values 0 and 4 and columns 'points' and 'assists'
df.loc[0:4, ['points', 'assists']]

        points	assists
0	18	5
1	22	7
2	19	7
3	14	9
4	14	12

Que nous souhaitions accéder à une seule valeur ou à un groupe de lignes et de colonnes, la fonction .loc peut faire les deux.

Exemple 2 : Comment utiliser at dans Pandas

Le code suivant montre comment utiliser .at pour accéder à la valeur dans le DataFrame situé à la position d’index 0 de la colonne de points :

#select value located at index position 0 of the points column
df.at[0, 'points']

18

Cela renvoie une valeur de 18 .

Cependant, supposons que nous essayions d’utiliser at pour accéder aux lignes entre les valeurs d’index 0 et 4 ainsi qu’aux colonnes points et assists :

#try to select rows between index values 0 and 4 and columns 'points' and 'assists'
df.at[0:4, ['points', 'assists']] 

TypeError: unhashable type: 'list'

Nous recevons une erreur car la fonction at est incapable de prendre plusieurs lignes ou plusieurs colonnes comme arguments d’entrée.

Conclusion

Lorsque vous souhaitez accéder à une seule valeur dans un DataFrame pandas, les fonctions loc et at fonctionneront correctement.

Cependant, lorsque vous souhaitez accéder à un groupe de lignes et de colonnes, seule la fonction loc est en mesure de le faire.

Connexes : Pandas loc vs iloc : quelle est la différence ?

Ressources additionnelles

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

Comment sélectionner des lignes selon plusieurs conditions à l’aide de Pandas Loc
Comment sélectionner des lignes en fonction des valeurs de colonne dans Pandas
Comment sélectionner des lignes par index dans Pandas

Ajouter un commentaire

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