La sélection et l’indexation avec Pandas sont des opérations fondamentales : elles te permettent d’extraire des sous-ensembles précis de données d’un DataFrame. Dans ce tuto, on utilise ce petit jeu de données :
import pandas as pd
df = pd.DataFrame({
"ID": [101, 102, 103, 104, 105, 106, 107],
"Name": ["Alice", "Bob", "Charlie", "David", "Emma", "Frank", "Grace"],
"Age": [25, 30, 35, 40, 28, 62, 19],
"Salary": [32000, 41000, 52000, 61000, 38000, 58000, 21000],
"City": ["Paris", "Lyon", "Paris", "Nice", "Lyon", "Paris", "Nice"],
})
print(df)Python ID Name Age Salary City
0 101 Alice 25 32000 Paris
1 102 Bob 30 41000 Lyon
2 103 Charlie 35 52000 Paris
3 104 David 40 61000 Nice
4 105 Emma 28 38000 Lyon
5 106 Frank 62 58000 Paris
6 107 Grace 19 21000 NiceSélectionner des colonnes et des lignes #
Tu peux sélectionner des colonnes et des lignes avec les crochets [], .loc[] et .iloc[].
Les crochets pour choisir des colonnes #
Pour sélectionner une ou plusieurs colonnes par leur nom, passe une liste de noms entre crochets :
selected_columns = df[['Name', 'Salary']]
print(selected_columns.head(3))Python Name Salary
0 Alice 32000
1 Bob 41000
2 Charlie 52000.loc[] : sélection par étiquette #
L’indexeur .loc[] sélectionne des lignes et des colonnes grâce à leurs étiquettes :
selected_data = df.loc[3:5, ['Name', 'Salary']]
print(selected_data)Python Name Salary
3 David 61000
4 Emma 38000
5 Frank 58000Attention : avec .loc[], un découpage (slicing) inclut les deux bornes. Ici, les lignes 3, 4 et 5 sont toutes sélectionnées.
.iloc[] : sélection par position #
L’indexeur .iloc[] sélectionne les lignes et les colonnes selon leur position (un nombre entier à partir de 0), ce qui est utile pour une indexation numérique :
selected_data = df.iloc[1:4, 0:2]
print(selected_data)Python ID Name
1 102 Bob
2 103 Charlie
3 104 DavidAttention : avec .iloc[], la borne de fin est exclue. Seules les lignes 1, 2 et 3 et les colonnes 0 et 1 sont affichées.
Filtrer avec des conditions #
La sélection conditionnelle filtre les lignes selon des critères précis, grâce à l’indexation booléenne. Quand tu passes à un DataFrame une liste de booléens (de la même longueur que le nombre de lignes), il ne garde que les lignes où la valeur est True.
Le masque booléen #
Crée un masque en appliquant une condition à une colonne, puis utilise-le pour filtrer les lignes :
# La condition renvoie une série de booléens :
# True quand elle est remplie
boolean_mask = df['Age'] > 30
filtered_data = df[boolean_mask]
print(filtered_data)Python ID Name Age Salary City
2 103 Charlie 35 52000 Paris
3 104 David 40 61000 Nice
5 106 Frank 62 58000 ParisPlusieurs conditions #
Combine plusieurs conditions avec les opérateurs logiques & (ET) et | (OU). Entoure toujours chaque condition de parenthèses. Pour tester si une valeur appartient à une liste, utilise la méthode .isin().
# ET : plus de 25 ans ET salaire supérieur à 40 000
print(df[(df['Age'] > 25) & (df['Salary'] > 40000)])
# OU : moins de 20 ans OU plus de 60 ans
print(df[(df['Age'] < 20) | (df['Age'] > 60)])
# isin : la ville est Paris ou Nice
print(df[df['City'].isin(['Paris', 'Nice'])])Python ID Name Age Salary City
1 102 Bob 30 41000 Lyon
2 103 Charlie 35 52000 Paris
3 104 David 40 61000 Nice
5 106 Frank 62 58000 Paris
ID Name Age Salary City
5 106 Frank 62 58000 Paris
6 107 Grace 19 21000 Nice
ID Name Age Salary City
0 101 Alice 25 32000 Paris
2 103 Charlie 35 52000 Paris
3 104 David 40 61000 Nice
5 106 Frank 62 58000 Paris
6 107 Grace 19 21000 NiceLes méthodes d’indexation #
Pandas propose plusieurs méthodes pour personnaliser et réinitialiser l’index d’un DataFrame.
set_index() #
La méthode set_index() définit une ou plusieurs colonnes comme index. C’est utile pour accéder facilement aux lignes avec .loc[]. Elle renvoie un nouveau DataFrame : pour conserver le résultat, affecte-le à une variable (ou utilise inplace=True à la place, mais pas les deux à la suite : la colonne ID ne serait plus disponible la deuxième fois).
df = df.set_index('ID')
print(df.head(3))
# Avec l'index ID, on peut sélectionner une ligne par son identifiant
print(df.loc[103])Python Name Age Salary City
ID
101 Alice 25 32000 Paris
102 Bob 30 41000 Lyon
103 Charlie 35 52000 Paris
Name Charlie
Age 35
Salary 52000
City Paris
Name: 103, dtype: objectreset_index() #
La méthode reset_index() remet l’index par défaut (des entiers à partir de 0). Avec drop=True, l’ancien index est supprimé au lieu d’être conservé comme colonne :
df = df.reset_index(drop=True)
print(df.head(3))Python Name Age Salary City
0 Alice 25 32000 Paris
1 Bob 30 41000 Lyon
2 Charlie 35 52000 ParisTu sais maintenant sélectionner et filtrer un DataFrame. La suite de la série porte sur le nettoyage de données avec Pandas. Pour aller plus loin sur l’indexation, consulte la documentation officielle de Pandas.
Pour aller plus loin, consulte aussi notre guide des 10 astuces Pandas en Python.
loc et iloc ne s’apprennent qu’en les utilisant. Dans le cours Analyse et visualisation de données, tu les pratiques sur de vraies données avec des exercices corrigés.

