About Me

Hai, saya Rosihan Ari Yuana. Saya sehari-hari adalah mengajar di Universitas Sebelas Maret.

Bidang riset saya tentang adaptive learning, computer aided learning, dan datascience

Selain itu, saya juga seorang penulis buku dan blogger.

More about me...

Menangani Missing Data dengan Python

Dalam datascience, sering kali kita jumpai data-data yang tidak utuh, atau hilang (missing data atau missing value). Sebagai contoh adalah data berikut ini:

Contoh Missing Data

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:

Dataframe hasil import

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.

Matriks X yang di dalamnya ada NaN (missing value/data)

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.

Matriks X tanpa NaN

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 😀


Article by Request

Anda belum memahami konsep pemrograman PHP Native, Python, Java, atau SQL? atau Anda belum punya ide penyelesaian dari studi kasus yang dihadapi sampai saat ini.

Silakan manfaatkan layanan Article by Request di blog ini.


Bagikan artikel ini jika bermanfaat !

Assalaamu'alaikum.. aktivitas keseharian saya mengajar di Universitas Sebelas Maret, dengan matakuliah pemrograman dan basis data. Adapun bidang penelitian saya tentang computational thinking dan computer-aided learning.

Leave a Reply