Skip to content

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)

PyGWalker for Data visualization (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 Janeiro

Rechercher 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 York

Vous pouvez utiliser n’importe quel opérateur de comparaison :

OpérateurSignification
==é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  Tokyo

Utilisez ~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 manquantes

6. 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


Foire aux questions

  1. Comment rechercher une valeur spécifique dans une colonne d’un DataFrame ?
    Utilisez l’indexation booléenne :

    df[df['Age'] == 27]
  2. Comment récupérer une valeur spécifique d’une colonne ?
    Utilisez l’index de ligne + le nom de colonne :

    df['Age'][0]
  3. Comment obtenir rapidement une seule valeur ?
    Utilisez .at ou .iat :

    df.at[0, 'Age']
    df.iat[0, 1]

;