Comment rechercher facilement une valeur dans une colonne d’un DataFrame Pandas
Updated on
Rechercher des valeurs dans une colonne d’un DataFrame Pandas est une opération fondamentale pour filtrer, nettoyer et analyser les données. Pandas propose de nombreuses méthodes puissantes de recherche — notamment l’indexation booléenne, isin(), query() et les opérations sur les chaînes — qui rendent cette tâche rapide et intuitive.
Ce guide mis à jour couvre les techniques les plus utiles et modernes pour rechercher des valeurs dans un DataFrame, avec des exemples que vous pouvez appliquer directement dans des cas d’usage réels.
Vous voulez créer rapidement des visualisations de données à partir de DataFrames Pandas sans écrire de code ?
PyGWalker transforme votre DataFrame en une interface interactive de type Tableau dans Jupyter Notebook.
PyGWalker on GitHub (opens in a new tab)
Bases du DataFrame Pandas
Un DataFrame Pandas est une structure tabulaire bidimensionnelle avec des lignes et colonnes étiquetées. Voici un exemple simple :
import pandas as pd
data = {
'Name': ['John', 'Emma', 'Peter', 'David', 'Sophie'],
'Age': [27, 21, 24, 30, 29],
'Gender': ['Male', 'Female', 'Male', 'Male', 'Female'],
'City': ['New York', 'London', 'Paris', 'Tokyo', 'Rio de Janeiro']
}
df = pd.DataFrame(data)
print(df)Résultat :
Name Age Gender City
0 John 27 Male New York
1 Emma 21 Female London
2 Peter 24 Male Paris
3 David 30 Male Tokyo
4 Sophie 29 Female Rio de JaneiroRechercher des valeurs dans une colonne de DataFrame
1. Rechercher une correspondance exacte (indexation booléenne)
result = df[df['Age'] == 27]
print(result)Résultat :
Name Age Gender City
0 John 27 Male New YorkVous pouvez utiliser n’importe quel opérateur de comparaison :
| Opérateur | Signification |
|---|---|
== | égal |
!= | différent |
> / < | supérieur / inférieur |
>= / <= | supérieur ou égal / inférieur ou égal |
Exemple : trouver les lignes où Age ≥ 25
df[df['Age'] >= 25]2. Rechercher plusieurs valeurs avec isin()
cities = ['Paris', 'Tokyo']
df[df['City'].isin(cities)]Résultat :
Name Age Gender City
2 Peter 24 Male Paris
3 David 30 Male TokyoUtilisez ~df['col'].isin() pour exclure des valeurs.
3. Rechercher avec query() (lisible et rapide)
query() vous permet de filtrer les lignes avec une syntaxe proche de SQL — très pratique pour la lisibilité.
df.query("Age == 27")Ou avec plusieurs conditions :
df.query("Age > 25 and Gender == 'Female'")Cela donne souvent un code plus clair que l’indexation booléenne imbriquée.
4. Rechercher des motifs dans des chaînes (str.contains())
Utile pour filtrer les colonnes textuelles.
Contient une sous-chaîne
df[df['City'].str.contains('on', case=False, na=False)]Commence ou se termine par
df[df['Name'].str.startswith('J')]
df[df['City'].str.endswith('o')]5. Rechercher des valeurs manquantes / non manquantes
df[df['City'].isna()] # valeurs manquantes
df[df['City'].notna()] # valeurs non manquantes6. Rechercher sur plusieurs colonnes
Trouver les lignes où au moins une colonne correspond à une valeur :
df[df.eq('Male').any(axis=1)]Trouver les lignes où toutes les conditions sont remplies :
df[(df['Gender'] == 'Female') & (df['Age'] > 25)]Conseils de performance (réalistes et exacts)
Certains conseils de performance étaient auparavant mal compris dans d’anciens tutoriels.
Voici des recommandations fiables :
✔ 1. Convertir les colonnes en category si elles contiennent beaucoup de valeurs répétées
Cela accélère les comparaisons :
df['City'] = df['City'].astype('category')✔ 2. Utiliser des tableaux NumPy pour des jeux de données très volumineux
import numpy as np
ages = df['Age'].to_numpy()
df[ages == 27]✔ 3. Éviter apply() pour la recherche
Les opérations vectorisées (indexation booléenne, isin(), query()) sont toujours plus rapides.
❌ Supprimé : “.loc[] est plus rapide que l’indexation booléenne”
C’est faux — elles fonctionnent de la même manière en interne.
.loc[] sert à la sélection basée sur les labels, pas à améliorer la vitesse.
⚠ À propos de searchsorted()
searchsorted() fonctionne correctement uniquement si la colonne est triée et ne confirme pas que la valeur existe.
Par exemple :
df_sorted = df.sort_values('Age')
idx = df_sorted['Age'].searchsorted(27)Cela renvoie la position d’insertion — pas nécessairement la ligne avec Age = 27.
Utilisez-le seulement dans des cas avancés.
Conclusion
Rechercher des valeurs dans une colonne Pandas est essentiel pour l’exploration et le nettoyage des données. Pandas propose de nombreuses méthodes efficaces de recherche :
- indexation booléenne pour les correspondances exactes ;
isin()pour plusieurs valeurs ;query()pour un filtrage clair, proche de SQL ;- recherche de chaînes avec
str.contains(); - filtrage des valeurs manquantes ;
- filtrage sur plusieurs colonnes.
Ces méthodes vous aident à extraire rapidement, précisément et proprement les données dont vous avez besoin.
Liens
- Comment convertir un DataFrame Pandas en liste Python
- Comment trier un DataFrame Pandas par index
- Comment convertir une Series Pandas en DataFrame
- Comment créer une liste de noms de colonnes dans un DataFrame PySpark
- Comment ajouter (append) un DataFrame Pandas en Python
- Comment renommer une colonne dans un DataFrame Pandas
Foire aux questions
-
Comment rechercher une valeur spécifique dans une colonne d’un DataFrame ?
Utilisez l’indexation booléenne :df[df['Age'] == 27] -
Comment récupérer une valeur spécifique d’une colonne ?
Utilisez l’index de ligne + le nom de colonne :df['Age'][0] -
Comment obtenir rapidement une seule valeur ?
Utilisez.atou.iat:df.at[0, 'Age'] df.iat[0, 1]
;
