Dalam datascience, sering kali kita jumpai data-data yang tidak utuh, atau hilang (missing data atau missing value). Sebagai contoh adalah data berikut ini:
Gambar di atas menunjukkan data ketepatan waktu lulus dari mahasiswa dari beberapa program studi. Dalam hal ini kolom ‘Prodi’, ‘Usia’, dan ‘IPK’ kita sebut sebagai variabel bebas (X) dan kolom ‘LulusTepatWaktu’ sebagai variabel terikat (y). Jika diperhatikan, maka ada beberapa missing data dalam X, yaitu pada kolom ‘Usia’ dan ‘IPK’, khususnya pada data baris ke-4 dan 7.
Dalam praktiknya, missing data bisa disebabkan karena ada kendala pada aplikasi atau software yang digunakan untuk menyimpan data tersebut, human error, atau bisa juga disebabkan karena alat yang rusak.
Sebelum dilakukan pengolahan data untuk mendapatkan insight nya, sangatlah perlu dilakukan penanganan terhadap missing data tersebut supaya tidak mengganggu dalam proses pengolahan selanjutnya. Langkah penanganan missing data ini, di dalam datascience, termasuk dalam tahap data preprocessing atau tahap di mana kita menyiapkan data terlebih dahulu sebelum dilakukan data analisis.
Di satu sisi, sebenarnya kita dapat menghapus baris data yang di dalamnya terdapat missing data tersebut, namun di sisi lain, penghapusan ini terkadang juga dapat berpengaruh terhadap hasil analisisnya apabila data yang dihapus tersebut merupakan data yang bersifat krusial. Oleh karena itu, diperlukan cara lain selain menghapusnya, yaitu dengan mengisi missing data tersebut dengan nilai pendekatan.
Apabila missing data tersebut berupa data numerik, maka nilai pendekatan yang bisa digunakan untuk mengisinya adalah menggunakan mean (rata-rata), median (nilai tengah), atau modus (nilai yang sering muncul).
Pada artikel ini, akan dipaparkan bagaimana melakukan penanganan missing data numerik menggunakan Python.
Misalkan kita memiliki sebuah file data.csv yang berisi data seperti di atas (bisa diunduh di bawah ini).
Langkah pertama, terlebih dahulu kita load beberapa library untuk keperluan hal ini.
import pandas as pd
import numpy as np
from sklearn.impute import SimpleImputer
Dalam hal ini, library pandas nanti akan digunakan untuk mengimport data dari file CSV. Numpy digunakan untuk mendefinisikan missing datanya (NaN = Not a Number). Sedangkan Scikit Learn (sklearn) untuk penanganan missing datanya.
Langkah ke dua, kita import data dari file CSV.
dataset = pd.read_csv('data.csv', sep=';');
Perintah di atas bertujuan untuk mengimport data dari file data.csv dan disimpan ke dalam ‘dataset’ dengan format dataframe. Adapun argumen sep=';' digunakan sebagai penanda bahwa pemisah antar kolom data pada file CSV tersebut menggunakan tanda semicolon (;).
Adapun hasil import akan diperoleh tampilan dataframe sebagai berikut:
Langkah ke tiga, yaitu kita mendefinisikan X dan y dari dataset tersebut. Dalam hal ini, kita akan menentukan kolom mana saja yang masuk ke dalam X, dan y nya.
X = dataset.iloc[:, :3].values
y = dataset.iloc[:, 3].values
Perintah X = dataset.iloc[:, :3].values digunakan untuk mendefinisikan X adalah matriks yang diambil mulai dari kolom index ke-0, 1, dan 2. Sedangkan y = dataset.iloc[:, 3].values untuk mendefinisikan y yaitu data yang berada pada kolom index ke-3.
Apabila X ini ditampilkan, maka akan tampilannya adalah sebagai berikut.
Langkah ke empat, yaitu proses penggantian missing value dengan nilai pendekatan.
Dalam hal ini, nantinya kita akan mencoba mengganti missing value dengan nilai mean dari tiap kolomnya. Perintah yang diberikan adalah sebagai berikut.
# setting konfigurasi untuk mengganti NaN dengan mean
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
# proses mengubah NaN dengan nilai mean
imputer = imputer.fit(X[:, 1:3])
# mereplace hasil pengubahan ke X kembali
X[:, 1:3] = imputer.transform(X[:, 1:3])
Perhatikan! proses pengubahan nilai hanya dilakukan pada kolom index ke-1, dan 2 saja (kolom yang datanya berisi data numerik). Apabila diinginkan mengubah strategi pendekatan selain 'mean', maka bisa dicoba menggunakan 'median', atau 'most_frequent' (modus).
Setelah proses di atas dilakukan, maka akan didapatkan matriks X sebagai berikut.
Berdasarkan tampilan X di atas terlihat bahwa sudah tidak ada missing data (NaN) lagi, karena sudah digantikan dengan nilai mean dari tiap kolomnya.
Demikian tutorial singkat tentang penanganan missing data dengan Python ini saya tuliskan, semoga bermanfaat bagi Anda. Salam datascience 😀






