Data Science

Suppression Efficace de Lignes dans les DataFrames Pandas

Spread the love

Pandas est une puissante librairie Python pour la manipulation de données. Une tâche courante consiste à supprimer des lignes d’un DataFrame en fonction des valeurs d’une colonne. Cet article explore des méthodes efficaces pour cela.

Table des matières

Suppression efficace de lignes avec masquage booléen

Le masquage booléen fournit le moyen le plus concis et le plus efficace de supprimer des lignes en fonction des valeurs d’une colonne. Il filtre directement le DataFrame en utilisant une condition booléenne.


import pandas as pd

# DataFrame d'exemple
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 25, 35],
        'City': ['New York', 'Londres', 'Paris', 'Tokyo']}
df = pd.DataFrame(data)
print("DataFrame original:n", df)

# Supprimer les lignes où Age est 25
df = df[df['Age'] != 25]  
print("nDataFrame après suppression des lignes avec Age 25:n", df)

df['Age'] != 25 crée une série booléenne. True indique les lignes où ‘Age’ n’est pas 25. L’utiliser pour indexer df filtre directement, ne gardant que les lignes où la condition est True. Cela évite l’étape intermédiaire de recherche des indices, améliorant la vitesse et l’efficacité mémoire, surtout pour les grands ensembles de données.

Utilisation de la méthode .drop (moins efficace)

La méthode .drop supprime les lignes par étiquette d’index. Pour supprimer en fonction des valeurs de colonne, vous devez d’abord identifier les indices pertinents en utilisant l’indexation booléenne.


import pandas as pd

# DataFrame d'exemple (même que précédemment)
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 25, 35],
        'City': ['New York', 'Londres', 'Paris', 'Tokyo']}
df = pd.DataFrame(data)
print("DataFrame original:n", df)

# Identifier les indices des lignes où Age est 25
indices_to_drop = df[df['Age'] == 25].index

# Supprimer les lignes en utilisant .drop
df = df.drop(indices_to_drop)
print("nDataFrame après suppression des lignes avec Age 25:n", df)

#Modification sur place (modifie directement le DataFrame original)
#df.drop(indices_to_drop, inplace=True) 

Cette approche, bien que claire, est moins efficace que le masquage booléen, particulièrement pour les grands DataFrames, en raison de l’étape supplémentaire d’identification et de suppression des indices.

Considérations de performance pour les grands ensembles de données

Pour les petits ensembles de données, la différence de performance entre ces méthodes peut être négligeable. Cependant, avec les grands ensembles de données, le masquage booléen surpasse de manière significative la méthode .drop. Le masquage booléen opère directement sur les données sous-jacentes, tandis que .drop implique la création d’un nouveau DataFrame, pouvant entraîner des problèmes de mémoire et des temps de traitement plus lents.

Laisser un commentaire

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