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