Kursus
Menghapus duplikasi adalah keterampilan penting untuk mendapatkan hitungan yang akurat karena Anda sering tidak ingin menghitung hal yang sama berkali-kali. Di Python, ini dapat dilakukan dengan menggunakan modul Pandas, yang memiliki metode bernama drop_duplicates.
Mari pahami cara menggunakannya dengan bantuan beberapa contoh.
Menghapus Duplikasi Nama
Misalkan Anda memiliki sebuah dataframe yang memuat kunjungan ke dokter hewan, dan klinik ingin mengetahui berapa banyak anjing dari tiap ras yang telah berkunjung. Namun, ada anjing seperti Max dan Stella yang berkunjung lebih dari sekali dalam dataset Anda. Karenanya, Anda tidak bisa sekadar menghitung jumlah tiap ras di kolom ras.
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
Untuk mencapai ini, Anda akan menghapus baris yang memuat nama anjing yang sudah tercantum sebelumnya, atau dengan kata lain, Anda akan mengekstrak satu anjing untuk setiap nama dari dataset.
Anda akan melakukannya menggunakan metode drop_duplicates. Metode ini menerima argumen subset, yaitu kolom yang ingin kita jadikan dasar pencarian duplikasi—dalam hal ini, kita ingin semua nama yang unik.
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)
Tetapi, bagaimana jika kita memiliki anjing dengan nama yang sama?
Menghapus Duplikasi Pasangan
Dalam kasus tersebut, kita perlu mempertimbangkan lebih dari sekadar name saat menghapus duplikasi. Karena Max dan Max memiliki ras yang berbeda, kita dapat menghapus baris dengan pasangan nama dan ras yang sudah tercantum sebelumnya di 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
Untuk mendasarkan penghapusan duplikasi pada beberapa kolom, kita dapat memberikan daftar nama kolom ke argumen subset, dalam hal ini, name dan breed.
Sekarang kedua Max sudah termasuk.
Contoh Interaktif
Dalam latihan ini, Anda akan membuat beberapa DataFrame baru menggunakan nilai unik dari sales. sales tersedia, dan pandas diimpor sebagai pd.
Anda akan melakukan langkah-langkah berikut:
- Pertama, Anda akan menghapus baris
salesdengan pasangan duplikatstoredantype, menyimpannya sebagaistore_types, lalu mencetak head-nya. - Kemudian, Anda akan menghapus baris
salesdengan pasangan duplikatstoredandepartment, menyimpannya sebagaistore_depts, lalu mencetak head-nya. - Subset baris yang merupakan pekan libur, lalu hapus
datesyang duplikat, menyimpannya sebagaiholiday_dates. - Terakhir, pilih kolom
datedariholiday_dates, dan cetak 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"])
Saat kita menjalankan kode di atas, hasilnya sebagai berikut:
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]
Untuk mempelajari lebih lanjut tentang penghitungan dan agregasi data, silakan lihat video dari kursus kami Data Manipulation with pandas.
Konten ini diambil dari kursus DataCamp Data Manipulation with pandas oleh Maggie Matsui dan Richie Cotton.
