Missing value umumnya selalu terjadi di dalam dataset. Missing value harus ditangani sebelum dataset diproses dengan machine learning
Ada beberapa cara menangani missing value adalah seperti menghapusnya atau menggantinya dengan nilai lain
Contents
Mencari Missing Value
Jika data terdiri dari ratusan, ribuan bahkan jutaan baris tentu akan susah dalam menemukan nilai field yang kosong
Python Pandas memungkinkan kita dapat menemukan missing value secara cepat dengan fungsi isnull(), isna()
fungsi isna() mengembalikan nilai boolean sedangkan fungsi kebalikannya adalah notna()
Disini kita akan coba langsung menggunakan dataset terkenal yaitu dataset titanic untuk mencari nilai yang kosong dan bagaimana cara menghandelnya
Pertama download dulu datasetnya
Baca dataset dan gunakan fungsi isna() dan notna()
Hasil hasil fungsi diatas akan menjadi kurang dipahami karena banyaknya baris dan kolom data
Lakukan agregasi data agar mudah dipahami dengan fungsi sum()
Dengan bantuan fungsi isna() dan sum() kita tahu bahwa dalam dataset semua kolom tidak ada nilai yang kosong kecuali kolom Age dengan 177 missing value, Kolom Cabin 687 dan kolom Embarked 2
Menangani Missing Value
Secara umum ada 2 cara untuk menangani missing value yaitu dengan menghapusnya atau menggantinya dengan nilai yang lain
Kita dapat gunakan fungsi dropna() untuk menghapus data yang tidak memiliki nilai dan fungsi fillna() untuk mengisi nilai yang kosong
Pada dataset titanic, terdapat 3 kolom yang memiliki missing value yaitu Age, Cabin dan Embarked
Kita akan perlakukan setiap kolom dengan beda penanganan (ini sekedar contoh yaa :D)
- Missing value di kolom Age akan diisi dengan rata-rata dari semua umur penumpang (menggunakan mean)
- Missing value di kolom Cabin akan dihapus
- Missing value di kolom Embarked akan diisi dengan nilai Embarked yang paling banyak muncul di dataset (menggunakan modus)
Missing Value Kolom Age
Pertama, kita duplikat dulu dataframe-nya
kedua, cari nilai rata-rata dari kolom Age
Ketiga, Isikan nilai kosong di kolom Age dengan nilai rata-rata yang didapatkan
Keempat, cek kembali apakah masih terdapat missing value di kolom Age
# Langkah 1 rata_umur = df['Age'].mean() # Langkah 2 df['Age'] = df['Age'].fillna(rata_umur) # Langkah 3 df['Age'].isna().sum()
Missing Value Kolom Cabin
Untuk kolom Cabin kita akan hapus nilai yang kosong
Perhatian, Jika kita hapus missing value yang ada di kolom maka baris tersebut akan dihapus juga
Jadi misal kolom Cabin mempunyai missing value sebanyak 687 dan jika kita hapus maka 687 baris dari dataset akan terhapus
Karena ini hanya contoh penanganan maka abaikan saja 😀
Baiknya yang dihapus adalah kolom Cabin saja karena terlalu banyak missing value
Oke, pertama kita duplikat dan gunakan fungsi dropna() untuk menghapus missing value
df.drop('Cabin', axis=1, inplace=True)
Missing Value Kolom Embarked
Untuk kolom Embarked terdapat 2 missing value
Kita akan isi 2 nilai tadi dengan nilai yang paling banyak muncul mengingat tipe data dari kolom ini adalah kategorical data yang berupa string S, C dan Q
Pertama, kita duplikat dulu dataframe-nya
kedua, cari nilai paling banyak muncul dari kolom Embarked
Ketiga, Isikan nilai kosong di kolom Embarked dengan nilai modus yang didapatkan
Keempat, cek kembali apakah masih terdapat missing value di kolom Embarked
# Langkah 1 modus = df['Embarked'].mode()[0] # Langkah 2 df['Embarked'] = df['Embarked'].fillna(modus) # Langkah 3 df['Embarked'].isna().sum()
Selamat anda telah berhasil mengetahui cara menemukan missing value di dataset dan bagaimana cara menanganinya
Untuk menangani missing value tentunya perlu diidentifikasi terlebih dahulu apakah data tersebut akan dihapus atau direplace
terima kasih, artikel ini sangat membantu