Data Analysis

Sélection efficace des indices de lignes selon des conditions sur les colonnes dans Pandas

Spread the love

Pandas est une puissante librairie Python pour la manipulation et l’analyse de données. Une tâche courante consiste à sélectionner les lignes d’un DataFrame en fonction de conditions appliquées à des colonnes spécifiques. Cet article explore trois méthodes efficaces pour récupérer les indices des lignes répondant à un critère donné.

Table des matières

Indexation booléenne : une approche simple et efficace

L’indexation booléenne offre une solution concise et efficace pour des critères de sélection simples. Elle exploite directement la valeur de vérité d’une condition pour filtrer les lignes.

Illustrons avec un exemple :


import pandas as pd

data = {'col1': [1, 2, 3, 4, 5],
        'col2': [6, 7, 8, 9, 10],
        'col3': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)
print(df)

# Obtenir les indices où 'col1' est supérieur à 2
indices = df[df['col1'] > 2].index.tolist()
print(indices)  # Sortie : [2, 3, 4]

Ce code crée d’abord un masque booléen (df['col1'] > 2), puis l’utilise pour filtrer le DataFrame, et enfin extrait les indices des lignes sélectionnées à l’aide de .index.tolist().

Exploitation de np.where() de NumPy pour plus de flexibilité

La fonction np.where() de NumPy offre une approche plus polyvalente, particulièrement avantageuse pour les conditions complexes ou les conditions multiples simultanées.


import numpy as np

indices = np.where(df['col1'] > 2)[0].tolist()
print(indices)  # Sortie : [2, 3, 4]

np.where(df['col1'] > 2) renvoie un tuple ; le premier élément contient un tableau d’indices satisfaisant la condition. Nous accédons à cet élément à l’aide de [0] et le convertissons en liste à l’aide de .tolist().

Utilisation de query() de Pandas pour des requêtes complexes lisibles

La méthode query() améliore la lisibilité, notamment pour les conditions complexes. Elle permet de spécifier des critères à l’aide d’expressions de chaînes de caractères.


indices = df.query('col1 > 2').index.tolist()
print(indices)  # Sortie : [2, 3, 4]

# Exemple avec plusieurs conditions
indices = df.query('col1 > 2 and col2 < 9').index.tolist()
print(indices)  # Sortie : [2]

La méthode query() accepte directement une représentation sous forme de chaîne de caractères de la condition, ce qui améliore considérablement la lisibilité, notamment avec des conditions multiples ou complexes.

Conclusion : Chaque méthode récupère efficacement les indices en fonction d’une condition. L’indexation booléenne est la meilleure pour les conditions simples ; np.where() gère les scénarios plus complexes ; et query() excelle en lisibilité pour le filtrage avancé.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *