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



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

Voici la subtile différence entre les deux fonctions :

  • loc sélectionne les lignes et les colonnes avec des étiquettes spécifiques
  • iloc sélectionne les lignes et les colonnes à des positions entières spécifiques

Les exemples suivants montrent comment utiliser chaque fonction dans la pratique.

Exemple 1 : Comment utiliser loc dans Pandas

Supposons que nous ayons le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   'points': [5, 7, 7, 9, 12, 9, 9, 4],
                   'assists': [11, 8, 10, 6, 6, 5, 9, 12]},
                   index=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'])

#view DataFrame
df

	team	points	assists
A	A	5	11
B	A	7	8
C	A	7	10
D	A	9	6
E	B	12	6
F	B	9	5
G	B	9	9
H	B	4	12

Nous pouvons utiliser loc pour sélectionner des lignes spécifiques du DataFrame en fonction de leurs étiquettes d’index :

#select rows with index labels 'E' and 'F'
df.loc[['E', 'F']]

	team	points	assists
E	B	12	6
F	B	9	5

Nous pouvons utiliser loc pour sélectionner des lignes et des colonnes spécifiques du DataFrame en fonction de leurs étiquettes :

#select 'E' and 'F' rows and 'team' and 'assists' columns
df.loc[['E', 'F'], ['team', 'assists']]

	team	assists
E	B	12
F	B	9

Nous pouvons utiliser loc avec l’argument : pour sélectionner des plages de lignes et de colonnes en fonction de leurs étiquettes :

#select 'E' and 'F' rows and 'team' and 'assists' columns
df.loc['E': , :'assists']

        team	points	assists
E	B	12	6
F	B	9	5
G	B	9	9
H	B	4	12

Exemple 2 : Comment utiliser iloc dans Pandas

Supposons que nous ayons le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   'points': [5, 7, 7, 9, 12, 9, 9, 4],
                   'assists': [11, 8, 10, 6, 6, 5, 9, 12]},
                   index=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'])

#view DataFrame
df

	team	points	assists
A	A	5	11
B	A	7	8
C	A	7	10
D	A	9	6
E	B	12	6
F	B	9	5
G	B	9	9
H	B	4	12

Nous pouvons utiliser iloc pour sélectionner des lignes spécifiques du DataFrame en fonction de leur position entière :

#select rows in index positions 4 through 6 (not including 6)
df.iloc[4:6]

	team	points	assists
E	B	12	6
F	B	9	5

Nous pouvons utiliser iloc pour sélectionner des lignes et des colonnes spécifiques du DataFrame en fonction de leurs positions d’index :

#select rows in range 4 through 6 and columns in range 0 through 2
df.iloc[4:6, 0:2]

	team	assists
E	B	12
F	B	9

Nous pouvons utiliser loc avec l’argument : pour sélectionner des plages de lignes et de colonnes en fonction de leurs étiquettes :

#select rows from 4 through end of rows and columns up to third column
df.iloc[4: , :3]

        team	points	assists
E	B	12	6
F	B	9	5
G	B	9	9
H	B	4	12

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 *