Pandas est une puissante bibliothèque Python pour la manipulation et l’analyse de données. Le filtrage des lignes d’un DataFrame en fonction des valeurs des colonnes est une tâche fondamentale du traitement des données. Cet article explore différentes techniques pour filtrer efficacement les DataFrames Pandas, couvrant des scénarios simples à complexes.
Table des matières
- Filtrage de base : Colonne unique, condition unique
- Négation : Sélection des lignes qui ne correspondent pas à une condition
- Comparaisons numériques : Supérieur à, inférieur à, etc.
- Combinaison de conditions : Opérations ET et OU
- Filtrage avancé : Plusieurs colonnes et logique complexe
- Filtrage efficace avec
isin()
Filtrage de base : Colonne unique, condition unique
La forme la plus simple de filtrage consiste à sélectionner les lignes où une colonne spécifique correspond à une valeur particulière. Cela se fait à l’aide de l’indexation booléenne.
import pandas as pd
# DataFrame exemple
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 22, 28],
'City': ['New York', 'London', 'Paris', 'Tokyo']}
df = pd.DataFrame(data)
# Sélectionner les lignes où City est 'London'
london_residents = df[df['City'] == 'London']
print(london_residents)
Ce code crée un masque booléen (df['City'] == 'London'
) qui est True
lorsque la colonne ‘City’ est ‘London’ et False
sinon. Ce masque est ensuite utilisé pour indexer le DataFrame, ne sélectionnant que les lignes où le masque est True
.
Négation : Sélection des lignes qui ne correspondent pas à une condition
Pour sélectionner les lignes où une colonne ne contient pas une valeur spécifique, niez la condition booléenne à l’aide de l’opérateur !=
.
# Sélectionner les lignes où City n'est PAS 'London'
not_london_residents = df[df['City'] != 'London']
print(not_london_residents)
Comparaisons numériques : Supérieur à, inférieur à, etc.
Pour les colonnes numériques, utilisez les opérateurs de comparaison (>
, <
, >=
, <=
) pour filtrer en fonction des plages de valeurs.
# Sélectionner les lignes où Age est supérieur à 25
older_than_25 = df[df['Age'] > 25]
print(older_than_25)
# Sélectionner les lignes où Age est inférieur ou égal à 25
younger_than_or_equal_to_25 = df[df['Age'] <= 25]
print(younger_than_or_equal_to_25)
Combinaison de conditions : Opérations ET et OU
Filtrer en fonction de plusieurs valeurs de colonne en combinant des conditions booléennes avec les opérateurs logiques &
(ET) et |
(OU). Encadrez chaque condition entre parenthèses.
# Sélectionner les lignes où City est 'London' ET Age est supérieur à 25
london_and_older = df[(df['City'] == 'London') & (df['Age'] > 25)]
print(london_and_older)
# Sélectionner les lignes où City est 'London' OU Age est supérieur à 25
london_or_older = df[(df['City'] == 'London') | (df['Age'] > 25)]
print(london_or_older)
Filtrage avancé : Plusieurs colonnes et logique complexe
Pour les scénarios complexes, la méthode query()
offre une meilleure lisibilité.
# Utilisation de query() pour une meilleure lisibilité
complex_filter = df.query('(City == "London" and Age > 25) or (Age < 23)')
print(complex_filter)
Filtrage efficace avec isin()
La méthode isin()
fournit un moyen concis de vérifier si des valeurs sont contenues dans une liste.
cities_to_include = ['London', 'Paris']
filtered_df = df[df['City'].isin(cities_to_include)]
print(filtered_df)
Cet article a démontré diverses techniques de filtrage des DataFrames dans Pandas. Le choix de la bonne méthode dépend de la complexité de vos critères de filtrage. N’oubliez pas d’utiliser correctement les parenthèses avec les opérateurs logiques pour garantir des résultats précis.