Menangani Nilai Duplikat dalam Pandas DataFrame

Menangani Nilai Duplikat dalam Pandas DataFrame

Pengantar

Sebagai seorang analis data, adalah tanggung jawab kami untuk memastikan integritas data untuk mendapatkan wawasan yang akurat dan dapat dipercaya. Pembersihan data memainkan peran penting dalam proses ini, dan nilai duplikat adalah salah satu masalah paling umum yang dihadapi analis data. Nilai duplikat berpotensi salah merepresentasikan wawasan. Oleh karena itu, sangat penting untuk memiliki metode yang efisien untuk menangani nilai duplikat. Dalam artikel ini, kita akan mempelajari cara mengidentifikasi dan menangani nilai duplikat, serta praktik terbaik untuk mengelola duplikat.

Mengidentifikasi Nilai Duplikat

Langkah pertama dalam menangani nilai duplikat adalah mengidentifikasinya. Mengidentifikasi nilai duplikat merupakan langkah penting dalam pembersihan data. Panda menawarkan beberapa metode untuk mengidentifikasi nilai duplikat dalam kerangka data. Pada bagian ini, kita akan membahas tentang duplicated() fungsi dan value_counts() fungsi untuk mengidentifikasi nilai duplikat.

menggunakan digandakan()

Grafik duplicated() function adalah fungsi pustaka Pandas yang memeriksa baris duplikat dalam DataFrame. Keluaran dari duplicated() function adalah seri boolean dengan panjang yang sama dengan input DataFrame, di mana setiap elemen menunjukkan apakah baris yang sesuai adalah duplikat atau tidak.

Mari kita perhatikan contoh sederhana dari duplicated() fungsi:

import pandas as pd data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) df_duplicates = df.duplicated()
print(df_duplicates)

Keluaran:

0 False
1 False
2 False
3 False
4 False
5 True
dtype: bool

Pada contoh di atas, kami membuat DataFrame yang berisi nama siswa dan skor totalnya. Kami dipanggil duplicated() pada DataFrame, yang menghasilkan seri boolean dengan False mewakili nilai-nilai unik dan True mewakili nilai duplikat.

Dalam contoh ini, kejadian pertama dari nilai dianggap unik. Namun, bagaimana jika kita ingin nilai terakhir dianggap unik, dan kita tidak ingin mempertimbangkan semua kolom saat mengidentifikasi nilai duplikat? Di sini, kita dapat memodifikasi duplicated() berfungsi dengan mengubah nilai parameter.

Parameter: Subset dan Keep

Grafik duplicated() fungsi menawarkan opsi penyesuaian melalui parameter opsionalnya. Ini memiliki dua parameter, seperti yang dijelaskan di bawah ini:

  • subset: Parameter ini memungkinkan kita menentukan subkumpulan kolom untuk dipertimbangkan selama deteksi duplikat. Subset diatur ke None secara default, artinya setiap kolom dalam DataFrame dipertimbangkan. Untuk menentukan nama kolom, kami dapat menyediakan subset dengan daftar nama kolom.

    Berikut adalah contoh penggunaan parameter subset:

    
    df_duplicates = df.duplicated(subset=['StudentName'])
    

    Keluaran:

    0 False
    1 False
    2 False
    3 False
    4 False
    5 True
    dtype: bool
    
  • keep: Opsi ini memungkinkan kita untuk memilih contoh mana dari baris duplikat yang harus ditandai sebagai duplikat. Kemungkinan nilai untuk keep adalah:

    • "first": Ini adalah nilai default untuk keep pilihan. Ini mengidentifikasi semua duplikat kecuali untuk kejadian pertama, menganggap nilai pertama unik.
    • "last": Opsi ini mengidentifikasi kemunculan terakhir sebagai nilai unik. Semua kejadian lain akan dianggap duplikat.
    • False: Opsi ini melabeli setiap instance sebagai nilai duplikat.

Berikut adalah contoh penggunaan the keep parameter:


df_duplicates = df.duplicated(keep='last')
print(df_duplicates)

Keluaran:

0 True
1 False
2 False
3 False
4 False
5 False
dtype: bool
Visualisasikan Nilai Duplikat

Grafik value_counts() function adalah pendekatan kedua untuk mengidentifikasi duplikat. Itu value_counts() fungsi menghitung berapa kali setiap nilai unik muncul di kolom. Dengan menerapkan value_counts() fungsi ke kolom tertentu, frekuensi setiap nilai dapat divisualisasikan.

Berikut adalah contoh penggunaan the value_counts() fungsi:

import matplotlib.pyplot as plt
import pandas as pd data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) name_counts = df['StudentName'].value_counts()
print(name_counts)

Keluaran:

Mark 2
Ali 1
Bob 1
John 1
Johny 1
Name: StudentName, dtype: int64

Mari sekarang memvisualisasikan nilai duplikat dengan grafik batang. Kami dapat secara efektif memvisualisasikan frekuensi nilai duplikat menggunakan diagram batang.


name_counts.plot(kind='bar')
plt.xlabel('Student Name')
plt.ylabel('Frequency')
plt.title('Duplicate Name Frequencies')
plt.show()

nilai duplikat

Menangani Nilai Duplikat

Setelah mengidentifikasi nilai duplikat, saatnya untuk mengatasinya. Di bagian ini, kita akan menjelajahi berbagai strategi untuk menghapus dan memperbarui nilai duplikat menggunakan panda drop_duplicates() dan replace() fungsi. Selain itu, kami akan membahas agregasi data dengan nilai duplikat menggunakan groupby() fungsi.

Menghapus Nilai Duplikat

Pendekatan paling umum untuk menangani duplikat adalah menghapusnya dari DataFrame. Untuk menghilangkan catatan duplikat dari DataFrame, kami akan menggunakan drop_duplicates() fungsi. Secara default, fungsi ini menyimpan contoh pertama dari setiap baris duplikat dan menghapus kejadian berikutnya. Ini mengidentifikasi nilai duplikat berdasarkan semua nilai kolom; namun, kita dapat menentukan kolom yang akan dipertimbangkan menggunakan parameter subset.

Sintaks dari drop_duplicates() dengan nilai default di parameter adalah sebagai berikut:

dataFrame.drop_duplicates(subset=None, keep='first', inplace=False)

Grafik subset dan keep parameter memiliki penjelasan yang sama seperti pada duplicates(). Jika kita mengatur parameter ketiga inplace untuk True, semua modifikasi akan dilakukan langsung pada DataFrame asli, sehingga metode kembali None dan DataFrame asli sedang dimodifikasi. Secara default, inplace is False.

Berikut adalah contoh dari drop_duplicates() fungsi:


df.drop_duplicates(keep='last', inplace=True)
print(df)

Keluaran:

 StudentName Score
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45

Lihat panduan praktis dan praktis kami untuk mempelajari Git, dengan praktik terbaik, standar yang diterima industri, dan termasuk lembar contekan. Hentikan perintah Googling Git dan sebenarnya belajar itu!

Dalam contoh di atas, entri pertama telah dihapus karena merupakan duplikat.

Ganti atau Perbarui Nilai Duplikat

Metode kedua untuk menangani duplikat melibatkan penggantian nilai menggunakan Pandas replace() fungsi. Itu replace() fungsi memungkinkan kita untuk mengganti nilai atau pola tertentu dalam DataFrame dengan nilai baru. Secara default, ini menggantikan semua contoh nilai. Namun, dengan menggunakan parameter limit, kita dapat membatasi jumlah penggantian.

Berikut adalah contoh penggunaan the replace() fungsi:


df['StudentName'].replace('Mark', 'Max', limit=1, inplace=True)
print(df)

Keluaran:

 StudentName Score
0 Max 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45

Di sini, limit digunakan untuk mengganti nilai pertama. Bagaimana jika kita ingin mengganti kejadian terakhir? Dalam hal ini, kami akan menggabungkan duplicated() dan replace() fungsi. Menggunakan duplicated(), kami akan menunjukkan instance terakhir dari setiap nilai duplikat, dapatkan nomor baris menggunakan loc fungsi, dan kemudian menggantinya menggunakan replace() fungsi. Berikut adalah contoh penggunaan duplicated() dan replace() fungsi bersama.


last_occurrences = df.duplicated(subset='StudentName', keep='first') last_occurrences_rows = df[last_occurrences] df.loc[last_occurrences, 'StudentName'] = df.loc[last_occurrences, 'StudentName'].replace('Mark', 'Max') print(df)

Keluaran:

 StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Max 45

Fungsi Khusus untuk Penggantian Kompleks

Dalam beberapa kasus, menangani nilai duplikat memerlukan penggantian yang lebih rumit daripada sekadar menghapus atau memperbaruinya. Fungsi khusus memungkinkan kami membuat aturan penggantian khusus yang disesuaikan dengan kebutuhan kami. Dengan menggunakan panda apply() fungsi, kita dapat menerapkan fungsi kustom ke data kita.

Sebagai contoh, misalkan kolom โ€œStudentNameโ€ berisi nama duplikat. Sasaran kami adalah mengganti duplikat menggunakan fungsi khusus yang menambahkan angka di akhir nilai duplikat, menjadikannya unik.


def add_number(name, counts): if name in counts: counts[name] += 1 return f'{name}_{counts[name]}' else: counts[name] = 0 return name name_counts = {} df['is_duplicate'] = df.duplicated('StudentName', keep=False)
df['StudentName'] = df.apply(lambda x: add_number(x['StudentName'], name_counts) if x['is_duplicate'] else x['StudentName'], axis=1)
df.drop('is_duplicate', axis=1, inplace=True)
print(df)

Keluaran:

 StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark_1 45

Data Agregat dengan Nilai Duplikat

Data yang berisi nilai duplikat dapat digabungkan untuk meringkas dan mendapatkan wawasan dari data tersebut. Panda groupby() fungsi memungkinkan Anda menggabungkan data dengan nilai duplikat. Dengan menggunakan groupby() fungsi, Anda dapat mengelompokkan satu atau lebih kolom dan menghitung rata-rata, median, atau jumlah kolom lain untuk setiap grup.

Berikut adalah contoh penggunaan the groupby() Metode:


grouped = df.groupby(['StudentName']) df_aggregated = grouped.sum()
print(df_aggregated)

Keluaran:

 Score
StudentName Ali 65
Bob 76
John 44
Johny 39
Mark 90

Teknik Lanjutan

Untuk menangani skenario yang lebih kompleks dan memastikan analisis yang akurat, ada beberapa teknik lanjutan yang bisa kita gunakan. Bagian ini akan membahas penanganan duplikat fuzzy, duplikasi dalam data deret waktu, dan nilai indeks duplikat.

Duplikat Fuzzy

Duplikat fuzzy adalah rekaman yang tidak sama persis tetapi serupa, dan dapat terjadi karena berbagai alasan, termasuk kesalahan input data, salah eja, dan variasi dalam pemformatan. Kami akan menggunakan fuzzywuzzy Pustaka Python untuk mengidentifikasi duplikat menggunakan pencocokan kesamaan string.

Berikut adalah contoh penanganan nilai fuzzy:

import pandas as pd
from fuzzywuzzy import fuzz def find_fuzzy_duplicates(dataframe, column, threshold): duplicates = [] for i in range(len(dataframe)): for j in range(i+1, len(dataframe)): similarity = fuzz.ratio(dataframe[column][i], dataframe[column][j]) if similarity >= threshold: duplicates.append(dataframe.iloc[[i, j]]) if duplicates: duplicates_df = pd.concat(duplicates) return duplicates_df else: return pd.DataFrame() data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) threshold = 70 fuzzy_duplicates = find_fuzzy_duplicates(df, 'StudentName', threshold)
print("Fuzzy duplicates:")
print(fuzzy_duplicates.to_string(index=False))

Dalam contoh ini, kami membuat fungsi kustom find_fuzzy_duplicates yang menggunakan DataFrame, nama kolom, dan ambang kemiripan sebagai input. Fungsi iterasi melalui setiap baris dalam DataFrame dan membandingkannya dengan baris berikutnya menggunakan fuzz.ratio metode dari fuzzywuzzy perpustakaan. Jika skor kesamaan lebih besar dari atau sama dengan ambang, baris duplikat ditambahkan ke daftar. Terakhir, fungsi mengembalikan DataFrame yang berisi duplikat fuzzy.

Keluaran:

Fuzzy duplicates:
StudentName Score Mark 45 Mark 45 John 44 Johny 39

Dalam contoh di atas, duplikat fuzzy diidentifikasi di kolom โ€œStudentNameโ€. Fungsi 'find_fuzzy_duplicates' membandingkan setiap pasang string menggunakan fuzzywuzzy perpustakaan fuzz.ratio fungsi, yang menghitung skor kemiripan berdasarkan jarak Levenshtein. Kami telah menetapkan ambang pada 70, yang berarti bahwa setiap nama dengan rasio kecocokan lebih besar dari 70 akan dianggap sebagai nilai fuzzy. Setelah mengidentifikasi nilai fuzzy, kita dapat mengelolanya dengan menggunakan metode yang dijelaskan di bagian berjudul "Menangani Duplikat".

Menangani Duplikat Data Deret Waktu

Duplikat dapat terjadi ketika beberapa pengamatan direkam pada stempel waktu yang sama. Nilai-nilai ini dapat menyebabkan hasil yang bias jika tidak ditangani dengan benar. Berikut adalah beberapa cara untuk menangani nilai duplikat dalam data deret waktu.

  • Menjatuhkan Duplikat Tepat: Dalam metode ini, kami menghapus baris identik menggunakan drop_duplicates berfungsi di Panda.
  • Stempel Waktu Duplikat dengan Nilai Berbeda: Jika kami memiliki stempel waktu yang sama tetapi nilainya berbeda, kami dapat menggabungkan data dan mendapatkan lebih banyak wawasan menggunakan groupby(), atau kita dapat memilih nilai terbaru dan menghapus yang lain menggunakan drop_duplicates() pada pengatur terkenal. Pengatur ini menawarkan bantuan hukum kepada traderapabila trader berselisih dengan broker yang terdaftar dengan mereka. keep parameter disetel ke 'terakhir'.

Menangani Nilai Indeks Duplikat

Sebelum membahas nilai indeks duplikat, pertama-tama mari kita tentukan apa itu indeks di Pandas. Indeks adalah pengidentifikasi unik yang ditetapkan ke setiap baris DataFrame. Panda memberikan indeks numerik mulai dari nol secara default. Namun, indeks dapat ditetapkan ke kolom atau kombinasi kolom apa pun. Untuk mengidentifikasi duplikat di kolom Indeks, kita bisa menggunakan duplicated() dan drop_duplicates() fungsi, masing-masing. Pada bagian ini, kita akan mengeksplorasi cara menangani duplikat di kolom Indeks menggunakan reset_index().

Sesuai dengan namanya, file reset_index() fungsi di Pandas digunakan untuk mereset indeks DataFrame. Saat menerapkan reset_index() fungsi, indeks saat ini secara otomatis dibuang, yang berarti nilai indeks awal hilang. Dengan menentukan drop parameter sebagai False dalam reset_index() fungsi, kita dapat mempertahankan nilai indeks asli saat mengatur ulang indeks.

Berikut adalah contoh penggunaan reset_index():

import pandas as pd data = { 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data, index=['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark']) df.reset_index(inplace=True)
print(df)

Keluaran:

 index Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45

Praktik Terbaik

  • Pahami Sifat Data Gandakan: Sebelum mengambil tindakan apa pun, penting untuk memahami mengapa ada nilai duplikat dan apa yang diwakilinya. Identifikasi akar penyebabnya dan kemudian tentukan langkah yang tepat untuk menanganinya.

  • Pilih Metode yang Tepat untuk Menangani Duplikat: Seperti yang dibahas di bagian sebelumnya, ada beberapa cara untuk menangani duplikat. Metode yang Anda pilih bergantung pada sifat data dan analisis yang ingin Anda lakukan.

  • Dokumentasikan Pendekatan: Sangat penting untuk mendokumentasikan proses untuk mendeteksi nilai duplikat dan mengatasinya, memungkinkan orang lain untuk memahami proses berpikir.

  • Latihan Perhatian: Setiap kali kita menghapus atau memodifikasi data, kita harus memastikan bahwa menghilangkan duplikat tidak menimbulkan kesalahan atau bias ke dalam analisis. Melakukan tes kewarasan dan memvalidasi hasil dari setiap tindakan.

  • Pertahankan Data Asli: Sebelum melakukan operasi apa pun pada data, buat salinan cadangan dari data asli.

  • Cegah Duplikat di Masa Depan: Terapkan langkah-langkah untuk mencegah terjadinya duplikasi di masa mendatang. Ini dapat mencakup validasi data selama entri data, rutinitas pembersihan data, atau batasan basis data untuk menegakkan keunikan.

Final Thoughts

Dalam analisis data, mengatasi nilai duplikat merupakan langkah penting. Nilai duplikat dapat menyebabkan hasil yang tidak akurat. Dengan mengidentifikasi dan mengelola nilai duplikat secara efisien, analis data dapat memperoleh informasi yang tepat dan signifikan. Menerapkan teknik yang disebutkan dan mengikuti praktik terbaik akan memungkinkan analis untuk menjaga integritas data mereka dan mengekstrak wawasan berharga darinya.

Stempel Waktu:

Lebih dari penyalahgunaan