{count, plural, one {Corso} other {Corsi}}
Rimuovere i duplicati è fondamentale per ottenere conteggi accurati, perché spesso non vuoi contare la stessa cosa più volte. In Python, puoi farlo con il modulo Pandas, che include un metodo chiamato drop_duplicates.
Vediamo come usarlo con alcuni esempi.
Eliminare i nomi duplicati
Immagina di avere un dataframe con le visite dal veterinario e che lo studio voglia sapere quanti cani di ogni razza hanno fatto visita. Tuttavia, nel dataset ci sono cani come Max e Stella che hanno fatto più di una visita. Perciò non puoi semplicemente contare il numero di occorrenze di ciascuna razza nella colonna della razza.
print(vet_visits)
date name breed weight_kg
0 2018-09-02 Bella Labrador 24.87
1 2019-06-07 Max Labrador 28.35
2 2018-01-17 Stella Chihuahua 1.51
3 2019-10-19 Lucy Chow Chow 24.07
.. ... ... ... ...
71 2018-01-20 Stella Chihuahua 2.83
72 2019-06-07 Max Chow Chow 24.01
73 2018-08-20 Lucy Chow Chow 24.40
74 2019-04-22 Max Labrador 28.54
Per riuscirci, devi rimuovere le righe che contengono un nome di cane già comparso in precedenza; in altre parole, estrarrai dal dataset un solo cane per ciascun nome.
Puoi farlo con il metodo drop_duplicates. Accetta un argomento subset, ovvero la colonna su cui vogliamo individuare i duplicati: in questo caso ci servono tutti i nomi unici.
vet_visits.drop_duplicates(subset="name")
date name breed weight_kg
0 2018-09-02 Bella Labrador 24.87
1 2019-06-07 Max Chow Chow 24.01
2 2019-03-19 Charlie Poodle 24.95
3 2018-01-17 Stella Chihuahua 1.51
4 2019-10-19 Lucy Chow Chow 24.07
7 2019-03-30 Cooper Schnauzer 16.91
10 2019-01-04 Bernie St. Bernard 74.98
(6 2019-06-07 Max Labrador 28.35)
Ma cosa succede se ci sono cani con lo stesso nome?
Eliminare le coppie duplicate
In quel caso dobbiamo considerare più di name quando eliminiamo i duplicati. Poiché i due Max sono di razze diverse, possiamo eliminare le righe con coppie di nome e razza già presenti in precedenza nel dataset.
unique_dogs = vet_visits.drop_duplicates(subset=["name", "breed"])
print(unique_dogs)
date name breed weight_kg
0 2018-09-02 Bella Labrador 24.87
1 2019-03-13 Max Chow Chow 24.13
2 2019-03-19 Charlie Poodle 24.95
3 2018-01-17 Stella Chihuahua 1.51
4 2019-10-19 Lucy Chow Chow 24.07
6 2019-06-07 Max Labrador 28.35
7 2019-03-30 Cooper Schnauzer 16.91
10 2019-01-04 Bernie St. Bernard 74.98
Per basare l'eliminazione dei duplicati su più colonne, possiamo passare un elenco di nomi di colonne all'argomento subset; in questo caso, name e breed.
Ora entrambi i Max sono inclusi.
Esempio interattivo
In questo esercizio creerai alcuni nuovi DataFrame usando valori unici da sales. sales è disponibile e pandas è importato come pd.
Eseguirai i seguenti passaggi:
- Per prima cosa, rimuovi da
salesle righe con coppie duplicate distoreetype, salvale comestore_typese stampa l'head. - Poi rimuovi da
salesle righe con coppie duplicate distoreedepartment, salvale comestore_deptse stampa l'head. - Filtra le righe che sono settimane festive e rimuovi le
dateduplicate, salvando il risultato comeholiday_dates. - Infine, seleziona la colonna
datediholiday_datese stampa il dataframeholiday_dates.
# Drop duplicate store/type combinations
store_types = sales.drop_duplicates(subset=["store", "type"])
print(store_types.head())
# Drop duplicate store/department combinations
store_depts = sales.drop_duplicates(subset=["store", "department"])
print(store_depts.head())
# Subset the rows that are holiday weeks and drop duplicate dates
holiday_dates = sales[sales["is_holiday"]].drop_duplicates(subset="date")
# Print date col of holiday_dates
print(holiday_dates["date"])
Eseguendo il codice sopra, si ottiene il seguente risultato:
store type department date weekly_sales is_holiday temperature_c fuel_price_usd_per_l unemployment
0 1 A 1 2010-02-05 24924.50 False 5.728 0.679 8.106
901 2 A 1 2010-02-05 35034.06 False 4.550 0.679 8.324
1798 4 A 1 2010-02-05 38724.42 False 6.533 0.686 8.623
2699 6 A 1 2010-02-05 25619.00 False 4.683 0.679 7.259
3593 10 B 1 2010-02-05 40212.84 False 12.411 0.782 9.765
store type department date weekly_sales is_holiday temperature_c fuel_price_usd_per_l unemployment
0 1 A 1 2010-02-05 24924.50 False 5.728 0.679 8.106
12 1 A 2 2010-02-05 50605.27 False 5.728 0.679 8.106
24 1 A 3 2010-02-05 13740.12 False 5.728 0.679 8.106
36 1 A 4 2010-02-05 39954.04 False 5.728 0.679 8.106
48 1 A 5 2010-02-05 32229.38 False 5.728 0.679 8.106
498 2010-09-10
691 2011-11-25
2315 2010-02-12
6735 2012-09-07
6810 2010-12-31
6815 2012-02-10
6820 2011-09-09
Name: date, dtype: datetime64[ns]
Per saperne di più sul conteggio e l'aggregazione dei dati, guarda questo video del nostro corso Data Manipulation with pandas.
Questo contenuto è tratto dal corso Data Manipulation with pandas di DataCamp, a cura di Maggie Matsui e Richie Cotton.

