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
nan adalah np. nan ] Benar karena wadah daftar di Python memeriksa identitas sebelum memeriksa kesetaraan. Namun, ada “rasa” nan berbeda tergantung pada cara pembuatannya. float(‘ nan ‘) membuat objek yang berbeda dengan id yang berbeda sehingga float(‘ nan ‘) is float(‘ nan ‘) sebenarnya memberikan False!!Dengan demikian, apa yang menyebabkan NaN di Python?Aturan dasarnya adalah: Jika implementasi suatu fungsi melakukan salah satu dosa di atas, Anda mendapatkan NaN . Untuk fft , misalnya, Anda bertanggung jawab untuk mendapatkan NaN s jika nilai input Anda sekitar 1e1010 atau lebih besar dan kehilangan presisi secara diam-diam jika nilai input Anda sekitar 1e-1010 atau lebih kecil.Selanjutnya, apa itu Numpy NaN? tidak . nan memungkinkan untuk operasi vektor; ini adalah nilai float, sementara None , menurut definisi, memaksa tipe objek, yang pada dasarnya menonaktifkan semua efisiensi dalam numpy .Tahu juga, apa tipe data NaN Python?Cara menetapkan NaN ke variabel dengan PythonNaN , singkatan dari bukan angka, adalah tipe data numerik yang digunakan untuk mewakili nilai apa pun yang tidak ditentukan atau tidak dapat disajikan.Catatan: NaN tidak sama dengan infinity di Python.Catatan: Anda juga dapat menggunakan pustaka Desimal Python alih-alih float.Bagaimana cara menemukan nilai NaN dengan Python?PendeknyaUntuk mendeteksi nilai NaN, numpy menggunakan np. isnan() .Untuk mendeteksi nilai NaN, panda menggunakan salah satu dari . isna() atau . isnull() . Nilai NaN diwarisi dari fakta bahwa panda dibangun di atas numpy, sedangkan nama kedua fungsi tersebut berasal dari R’s DataFrames, yang struktur dan fungsinya coba ditiru oleh panda.