Cara Mengatasi Missing Value dengan Python

Posting Komentar
Cara Mengatasi Missing Value Python

Dalam pekerjaan di bidang data, salah satu hal dasar dalam membersihkan data adalah mengatasi missing value. Apa itu missing value? Missing value adalah data kosong pada sebuah dataset. Tidak selamanya dataset bersifat sempurna. Ada kalanya terdapat permasalahan seperti data yang kosong. Missing value bisa terjadi pada sebagian besar baris kolom, beberapa baris pada kolom tertentu, dan lain sebagainya. 

Maka dari itu, sebagai orang yang bekerja sebagai Data Analyst, kita perlu mengatasi missing value dengan Python agar hasil analisis data yang kita lakukan menjadi lebih akurat. Begitu juga jika kita bekerja sebagai Data Scientist, kita perlu mengatasi missing value agar permodelan dan hasil prediksi dari suatu data menjadi lebih akurat. 

Lalu bagaimana cara mengatasi missing value ketika mengolah data dengan Python?

Apa saja cara penanganan missing value?

Umumnya, ada beberapa cara dalam mengatasi missing value pada sebuah dataset yaitu:

1. Dibiarkan saja

2. Kolom dihapus jika kolom tersebut terlalu banyak memiliki missing value

3. Diisi dengan value lain (misal mean, modus, dan lain-lain)

Tutorial mengatasi missing value menggunakan Python

Untuk langkah-langkah penanganan missing value menggunakan Python, akan dijabarkan sebagai berikut ini. Sebelumnya, tutorial ini diadaptasi dari DQLab dan tool pengerjaannya menggunakan Kaggle. Dataset yang digunakan dalam tutorial ini adalah dataset Covid 19 yang disediakan oleh DQLab.

Langkah pertama adalah impor library pandas untuk dapat mengambil dataset Covid 19.

import pandas as pd

Setelah itu, deklarasikan dataset Covid 19 dari DQLab ke dalam variabel bernama df.

df = pd.read_csv("https://storage.googleapis.com/dqlab-dataset/datacovid19.csv")

Langkah selanjutnya adalah dengan mencari tahu informasi mengenai setiap kolom pada dataset df

df.info()

Python Missing Value
Dari hasil di atas, kita dapat mengetahui tipe data setiap kolom. Selain itu, kita juga dapat mengetahui berapa baris data yang terisi pada setiap kolom pada dataset df.

Langkah selanjutnya adalah dengan melihat berapa banyak baris data yang kosong pada masing-masing kolom.

df.isna().sum()

Missing Value Python

Hampir seluruh kolom memiliki missing value. Kolom yang sama sekali tidak memiliki missing value adalah kolom country_region, date, dan confirmed.

Langkah selanjutnya adalah dengan mencari tahu jumlah baris dan kolom pada dataset df.

df.shape

Rows and Columns in Python

Dari hasil running kode di atas, dapat diketahui bahwa dataset df memiliki 1000 baris dan 13 kolom.

Untuk dapat memahami cara mengatasi missing value pada setiap kolom, kita perlu memahami makna dari dataset beserta setiap kolom yang ada di dalamnya.

Misal pada kolom deaths dan recovered yang masing-masing memiliki 1 missing value. Bisa disimpulkan bahwa tidak ada pasien meninggal atau sembuh pada hari itu.

Untuk kolom kosong alias seluruh baris adalah missing value seperti combined_key, maka kolom ini dapat dihapus karena tidak ada data yang dapat diketahui pada kolom tersebut. Penghapusan kolom juga dapat dilakukan pada kolom yang sebagian besar datanya kosong alias missing value. 

Pada kolom province_state yang bertipe data string/object, missing value berarti kasus covid tidak diketahui/tercatat berasal dari mana pada negara tersebut. Maka dari itu, kita bisa isi dengan 'Unknown' atau 'Tidak diketahui'.

Pertama-tama, hapus kolom combined_key yang seluruh kolomnya adalah missing value.

del df['combined_key']

Atau bisa menggunakan kode berikut untuk menghapus kolom yang terdeteksi seluruhnya memiliki missing value.

df = df.dropna(axis=1, how="all")

Setelah itu, kita hapus baris yang memiliki setidaknya satu saja missing value.

df = df.dropna(axis=0, how="any")

Ketika dicetak ulang, jumlah baris pada dataset df adalah sebagai berikut.

Drop Missing Value Column

Jika kita cek, maka sudah tidak ada missing value lagi pada dataset df. 

Handle Missing Value with Python

Menangani Missing Value pada kolom data kategorik (string/object)

Anggaplah kita sudah melakukan langkah-langkah dari awal hingga menghapus kolom combined_key.

Terdapat cara lain dalam menangani missing value yaitu dengan mengisi satu persatu kolom yang memiliki missing value.

Selanjutnya kita akan menangani missing value pada kolom province_state. Pertama-tama kita cari tahu dulu unique value pada kolom province_state.

df['province_state'].unique()


Setelah itu, kita bisa mengisi missing value 'nan' dengan string yang kita inginkan. Contohnya adalah 'Unknown'

df['province_state'] = df['province_state'].fillna('Unknown')

Maka jika dicek ulang, missing value pada kolom province_state sudah berganti menjadi 'Unknown dan kolom province_state tidak memiliki missing value.

Missing Value Python

Menangani missing value pada kolom bertipe data numerik (float/integer)

Setelah berhasil mengatasi missing value pada kolom bertipe data kategorik (object/string), langkah selanjutnya adalah mengatasi missing value pada kolom bertipe data numerik. 

Umumnya, missing value pada data numerik diatasi dengan mengisi median (nilai tengah) atau mean (nilai rata-rata).

Kita perlu melihat terlebih dahulu rentang datanya. Jika data memiliki outliers, maka kita akan mengisi missing value dengan median. Jika data tidak memiliki outliers, maka kita akan mengisi missing value dengan mean.

Terdapat dua cara dalam menemukan outliers.

1. Menggambar diagram

2. Mengetahui min, median, mean, dan max dari data.

Untuk cara pertama, kita akan menggambar diagram boxplot untuk kolom active. Kita perlu import dua librari terlebih dahulu. 

import matplotlib.pyplot as plt

import seaborn as sns

Setelah itu, kita akan membuat diagram boxplot untuk mengetahui rentang data pada kolom active.

sns.boxplot(df['active'])

Diagram Boxplot

Dari diagram di atas, dapat diketahui bahwa kolom active memiliki outliers pada data. Outliers dapat terlihat pada titik-titik hitam yang berada di rentang data dengan nilai di bawah 500 hingga lebih dari 2000.

Maka dari itu, isi missing value pada kolom active dengan median dari seluruh data pada kolom tersebut.

df['active'] = df['active'].fillna(df['active'].median)

Cara kedua dalam menemukan outliers adalah dengan melihat min, median, mean, dan max pada data. Jika mean dan median memiliki selisih yang jauh, maka dapat dipastikan data memiliki outliers. Jika nilai mean dan median hampir sama, maka data termasuk distribusi normal dan missing value bisa diisi dengan mean. 

Mari kita periksa dan tangani kolom lainnya.

Outliers

Outliers

Outliers

Ketiga kolom di atas memiliki outliers. Maka ketiga kolom tersebut diisi dengan median. 

Penanganan lainnya

Untuk kolom pada deaths dan recovered yang masing-masing hanya memiliki satu missing value, isi dengan angka 0.

df['deaths'] = df['deaths'].fillna(0)

df['recovered'] = df['recovered'].fillna(0)

Karena kolom location_geom dan admin2 bertipe object, isi missing value dengan 'Unknown'.

df['location_geom'] = df['location_geom'].fillna('Unknown')

df['admin2'] = df['admin2'].fillna('Unknown')

Setelah dicek, dataset df sudah tidak memiliki missing value dan dataset sudah siap untuk dianalisis atau diolah untuk tahap selanjutnya. 

Null



Itsna.
Content Writer | Data Enthusiast | Front End Enthusiast | System Analyst
Terbaru Lebih lama

Related Posts

Posting Komentar