Supprimer les doublons est indispensable pour obtenir des comptages fiables, car vous ne voulez généralement pas compter la même chose plusieurs fois. En Python, vous pouvez le faire avec le module pandas, qui propose la méthode drop_duplicates.
Voyons comment l'utiliser à travers quelques exemples.
Supprimer les doublons de noms
Supposons que vous ayez un DataFrame qui recense des visites chez le vétérinaire, et que le cabinet souhaite connaître combien de chiens de chaque race ont été vus. Dans votre jeu de données, certains chiens comme Max et Stella sont venus plusieurs fois. Vous ne pouvez donc pas simplement compter les occurrences de chaque race dans la colonne des races.
date name breed weight_kg
02018-09-02 Bella Labrador 24.8712019-06-07 Max Labrador 28.3522018-01-17 Stella Chihuahua 1.5132019-10-19 Lucy Chow Chow 24.07..............712018-01-20 Stella Chihuahua 2.83722019-06-07 Max Chow Chow 24.01732018-08-20 Lucy Chow Chow 24.40742019-04-22 Max Labrador 28.54Propulsé par
Pour y parvenir, vous allez retirer les lignes où le nom du chien est déjà apparu plus tôt ; autrement dit, vous n'extrairez qu'un chien par nom dans l'ensemble de données.
On utilise pour cela la méthode drop_duplicates. Elle prend un argument subset, qui indique la ou les colonnes sur lesquelles détecter les doublons — ici, nous voulons obtenir tous les noms uniques.
vet_visits.drop_duplicates(subset="name")Propulsé par
date name breed weight_kg
02018-09-02 Bella Labrador 24.8712019-06-07 Max Chow Chow 24.0122019-03-19 Charlie Poodle 24.9532018-01-17 Stella Chihuahua 1.5142019-10-19 Lucy Chow Chow 24.0772019-03-30 Cooper Schnauzer 16.91102019-01-04 Bernie St. Bernard 74.98Propulsé par
Mais que faire si plusieurs chiens portent le même nom ?
Supprimer les paires en doublon
Dans ce cas, il faut tenir compte de plus que la seule colonne name. Comme les deux Max n'ont pas la même race, on peut supprimer les lignes en se basant sur la paire nom + race déjà rencontrée plus tôt dans le jeu de données.
unique_dogs = vet_visits.drop_duplicates(subset=["name","breed"])print(unique_dogs)Propulsé par
date name breed weight_kg
02018-09-02 Bella Labrador 24.8712019-03-13 Max Chow Chow 24.1322019-03-19 Charlie Poodle 24.9532018-01-17 Stella Chihuahua 1.5142019-10-19 Lucy Chow Chow 24.0762019-06-07 Max Labrador 28.3572019-03-30 Cooper Schnauzer 16.91102019-01-04 Bernie St. Bernard 74.98Propulsé par
Pour supprimer les doublons sur plusieurs colonnes, on passe une liste de noms de colonnes à l'argument subset, ici name et breed.
Les deux Max sont maintenant conservés.
Exemple interactif
Dans cet exercice, vous allez créer de nouveaux DataFrames à partir des valeurs uniques de sales. sales est disponible et pandas est importé sous l'alias pd.
Vous effectuerez les étapes suivantes :
Commencez par supprimer de sales les lignes avec des paires en doublon store et type, enregistrez le résultat dans store_types et affichez l'en-tête.
Ensuite, supprimez de sales les lignes avec des paires en doublon store et department, enregistrez le résultat dans store_depts et affichez l'en-tête.
Sous-sélectionnez les lignes correspondant aux semaines fériées et supprimez les dates en doublon, puis enregistrez le résultat dans holiday_dates.
Enfin, sélectionnez la colonne date de holiday_dates et affichez le DataFrame holiday_dates.
# Supprimer les combinaisons en doublon store/type
store_types = sales.drop_duplicates(subset=["store","type"])print(store_types.head())# Supprimer les combinaisons en doublon store/department
store_depts = sales.drop_duplicates(subset=["store","department"])print(store_depts.head())# Ne garder que les semaines fériées et supprimer les dates en doublon
holiday_dates = sales[sales["is_holiday"]].drop_duplicates(subset="date")# Afficher la colonne date de holiday_datesprint(holiday_dates["date"])Propulsé par
À l'exécution, le code ci-dessus produit le résultat suivant :
store type department date weekly_sales is_holiday temperature_c fuel_price_usd_per_l unemployment
01A12010-02-0524924.50 False 5.7280.6798.1069012A12010-02-0535034.06 False 4.5500.6798.32417984A12010-02-0538724.42 False 6.5330.6868.62326996A12010-02-0525619.00 False 4.6830.6797.259359310B12010-02-0540212.84 False 12.4110.7829.765
store type department date weekly_sales is_holiday temperature_c fuel_price_usd_per_l unemployment
01A12010-02-0524924.50 False 5.7280.6798.106121A22010-02-0550605.27 False 5.7280.6798.106241A32010-02-0513740.12 False 5.7280.6798.106361A42010-02-0539954.04 False 5.7280.6798.106481A52010-02-0532229.38 False 5.7280.6798.1064982010-09-106912011-11-2523152010-02-1267352012-09-0768102010-12-3168152012-02-1068202011-09-09Name: date,dtype: datetime64[ns]Propulsé par
Comprenez comment supprimer des éléments d'une liste en Python. Veuillez vous familiariser avec les méthodes telles que remove(), pop() et del pour la gestion des listes.
Supprimer les doublons est indispensable pour obtenir des comptages fiables, car vous ne voulez généralement pas compter la même chose plusieurs fois. En Python, vous pouvez le faire avec le module pandas, qui propose la méthode
drop_duplicates.Voyons comment l'utiliser à travers quelques exemples.
Supprimer les doublons de noms
Supposons que vous ayez un DataFrame qui recense des visites chez le vétérinaire, et que le cabinet souhaite connaître combien de chiens de chaque race ont été vus. Dans votre jeu de données, certains chiens comme Max et Stella sont venus plusieurs fois. Vous ne pouvez donc pas simplement compter les occurrences de chaque race dans la colonne des races.
Pour y parvenir, vous allez retirer les lignes où le nom du chien est déjà apparu plus tôt ; autrement dit, vous n'extrairez qu'un chien par nom dans l'ensemble de données.
On utilise pour cela la méthode
drop_duplicates. Elle prend un argumentsubset, qui indique la ou les colonnes sur lesquelles détecter les doublons — ici, nous voulons obtenir tous les noms uniques.Mais que faire si plusieurs chiens portent le même nom ?
Supprimer les paires en doublon
Dans ce cas, il faut tenir compte de plus que la seule colonne
name. Comme les deuxMaxn'ont pas la même race, on peut supprimer les lignes en se basant sur la paire nom + race déjà rencontrée plus tôt dans le jeu de données.Pour supprimer les doublons sur plusieurs colonnes, on passe une liste de noms de colonnes à l'argument
subset, icinameetbreed.Les deux Max sont maintenant conservés.
Exemple interactif
Dans cet exercice, vous allez créer de nouveaux DataFrames à partir des valeurs uniques de
sales.salesest disponible etpandasest importé sous l'aliaspd.Vous effectuerez les étapes suivantes :
salesles lignes avec des paires en doublonstoreettype, enregistrez le résultat dansstore_typeset affichez l'en-tête.salesles lignes avec des paires en doublonstoreetdepartment, enregistrez le résultat dansstore_deptset affichez l'en-tête.holiday_dates.datedeholiday_dateset affichez le DataFrameholiday_dates.À l'exécution, le code ci-dessus produit le résultat suivant :
Essayez par vous-même.
Pour en savoir plus sur le comptage et l'agrégation des données, regardez cette vidéo issue de notre cours Data Manipulation with pandas.
Ce contenu est extrait du cours Data Manipulation with pandas de DataCamp, par Maggie Matsui et Richie Cotton.