Saat kita mengolah data, ada satu masalah klasik yang hampir selalu muncul: data duplikat. Baris data yang muncul lebih dari sekali bisa bikin hasil analisis kita tidak akurat, misalnya menghitung total penjualan atau jumlah pengguna secara ganda.
Di tutorial kali ini, kita akan bedah cara mendeteksi dan menghapus data duplikat menggunakan Pandas di Python sampai tuntas.
Prasyarat & Persiapan File
Sebelum memulai, pastikan kamu sudah memasang Python dan library Pandas. Jika belum, kamu bisa mengisntalnya via terminal/CMD dengan perintah:
pip install pandasUntuk mengikuti tutorial ini, kamu punya dua opsi cara membuat filenya:
- Opsi A (File Python `.py`): Buat file baru bernama
main.pyataututorial_duplikat.pydi text editor favoritmu (seperti VS Code), lalu jalankan filenya lewat terminal. - Opsi B (Jupyter Notebook / Google Colab – Direkomendasikan): Buat notebook baru bernama
hapus_duplikat.ipynb. Opsi ini paling nyaman karena kamu bisa melihat tabel data secara langsung per langkah.
1. Persiapan: Menyiapkan Data Latihan
Supaya paham konsepnya, yuk buat DataFrame sederhana yang sengaja memiliki beberapa baris data ganda.
import pandas as pd
# Membuat data tiruan
data = {
'ID': [101, 102, 101, 103, 102],
'Nama': ['Andi', 'Budi', 'Andi', 'Cici', 'Budi'],
'Kota': ['Jakarta', 'Bandung', 'Jakarta', 'Surabaya', 'Bandung']
}
# Mengubah dictionary menjadi DataFrame
df = pd.DataFrame(data)
print("Data Awal:")
print(df)ID Nama Kota 0 101 Andi Jakarta 1 102 Budi Bandung 2 101 Andi Jakarta 3 103 Cici Surabaya 4 102 Budi Bandung
Perhatikan: Baris indeks ke-2 sama persis dengan ke-0, dan baris ke-4 sama persis dengan ke-1.
2. Mendeteksi Data Duplikat (.duplicated())
Sebelum menghapus, ada baiknya kita cek dulu baris mana saja yang dianggap ganda oleh Pandas. Kita bisa pakai fungsi duplicated().
# Cek baris duplikat
print(df.duplicated())0 False 1 False 2 True 3 False 4 True dtype: bool
Penjelasan:
Falseartinya baris tersebut baru pertama kali muncul.Trueartinya baris tersebut adalah duplikat dari baris yang sudah ada sebelumnya (indeks 2 dan 4).
Kalau ingin menampilkan baris data yang duplikat saja dalam bentuk tabel, Anda bisa gunakan teknik boolean indexing:
# Menampilkan hanya baris duplikat
print(df[df.duplicated()])3. Menghapus Data Duplikat (.drop_duplicates())
Nah, ini bagian utamanya. Untuk menghapus baris yang ganda, gunakan fungsi drop_duplicates().
# Hapus baris duplikat
df_bersih = df.drop_duplicates()
print("Data Setelah Duplikat Dihapus:")
print(df_bersih)ID Nama Kota 0 101 Andi Jakarta 1 102 Budi Bandung 3 103 Cici Surabaya
Baris indeks 2 dan 4 berhasil dihilangkan!
4. Opsi Lanjutan yang Sering Dipakai
Fungsi drop_duplicates() punya beberapa parameter berguna yang bikin proses pembersihan data jadi lebih fleksibel:
A. Memilih Data Mana yang Dipertahankan (keep)
Secara default, Pandas menyimpan baris pertama (keep='first'). Tapi kita bisa ubah parameternya:
- Menyimpan baris terakhir yang muncul:
df.drop_duplicates(keep='last') - Menghapus semua baris yang terlibat duplikat (tidak menyisakan satu pun):
df.drop_duplicates(keep=False)
B. Menghapus Duplikat Berdasarkan Kolom Tertentu (subset)
Terkadang, kita hanya ingin menganggap data itu duplikat berdasarkan satu atau dua kolom saja, bukan seluruh kolom.
Contoh: Kita mau hapus data kalau Nama-nya sama, tanpa peduli kolom lainnya.
# Cek duplikat hanya di kolom 'Nama'
df_unik_nama = df.drop_duplicates(subset=['Nama'])
print(df_unik_nama)C. Mengubah Data Langsung Tanpa Bikin Variabel Baru (inplace=True)
Jika Anda ingin langsung menerapkan perubahan ke DataFrame asal tanpa menyimpan ke variabel baru:
df.drop_duplicates(inplace=True)Rangkuman Kode Lengkap
Berikut ringkasan skrip lengkap yang bisa langsung Anda copy-paste dan jalankan di Jupyter Notebook atau Google Colab:
import pandas as pd
# 1. Buat Data
df = pd.DataFrame({
'ID': [101, 102, 101, 103, 102],
'Nama': ['Andi', 'Budi', 'Andi', 'Cici', 'Budi'],
'Kota': ['Jakarta', 'Bandung', 'Jakarta', 'Surabaya', 'Bandung']
})
# 2. Cek baris duplikat
print("--- Baris Duplikat ---")
print(df[df.duplicated()])
# 3. Hapus duplikat dan timpa data lama
df.drop_duplicates(inplace=True)
# 4. Tampilkan hasil akhir
print("\n--- Data Bersih ---")
print(df)Kesimpulan: Dengan memahami fungsi
drop_duplicates(), proses data cleaning Anda jadi jauh lebih cepat dan terhindar dari bias data.