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...

Encoding Data Kategori ke Numerik di Python

Dalam banyak kasus di datascience, seringkali dijumpai dataset yang berisi data kategori berbentuk non numerik. Sebagai contoh misalkan dataset karyawan yang di dalamnya terdapat kolom gender, di mana datanya berupa kategori ‘laki-laki’ atau ‘perempuan’. Contoh lainnya, masih dari dataset karyawan, misalnya jenis karyawan: ‘karyawan tetap’, ‘karyawan kontrak’, ‘freelance’. Data-data kategori dalam dataset yang diberikan pada contoh tersebut berupa string. Untuk keperluan pengolahan data, misalnya di machine learning, data-data tersebut harus dinyatakan ke dalam format numerik (encoding) supaya dapat diolah menggunakan formula matematika.

Artikel ini akan menjelaskan bagaimana melakukan encoding data kategori (categorical data) ke dalam numerik menggunakan Python. Dengan menggunakan library tertentu, proses ini dapat dilakukan dengan mudah dan cepat tanpa perlu banyak coding. Proses encoding data ke numerik ini masuk ke dalam proses data pre processing.

Sebagai studi kasus, misalkan diberikan file dataset CSV sebagai berikut.

Dari file tersebut, selanjutnya akan dilakukan proses encoding nya. Adapun langkah-langkah untuk melakukan hal ini adalah:

Import file CSV ke dalam dataset

Langkah pertama adalah proses importing data dari file mydata.csv ke dalam dataset. Perintah yang diberikan adalah:

import pandas as pd
dataset = pd.read_csv('mydata.csv', sep=';');
dataset

Hasil dari import di atas, akan diperoleh dataset berupa dataframe dengan tampilan seperti di bawah ini.

Tampilan dataset hasil import

Dataset di atas menunjukkan status kelulusan tepat waktu tidaknya seorang mahasiswa yang berasal dari 3 program studi, yaitu: ‘Informatika’, ‘Matematika’, dan ‘Fisika’. Dalam hal ini kolom ‘Prodi’, ‘Usia’, dan ‘IPK’ merupakan variabel bebasnya (X), dan ‘LulusTepatWaktu’ adalah variabel terikatnya (y).

Apabila diperhatikan, maka nilai yang ada di dalam kolom ‘Prodi’ berupa string. Demikian juga untuk kolom ‘LulusTepatWaktu’. Untuk keperluan proses analisis atau pengolahan di machine learning, kedua kolom ini perlu diencode terlebih dahulu ke dalam numerik.

Mengambil Data Variabel Bebas & Variabel Terikat dalam Dataset

Langkah berikutnya adalah proses pengambilan data yang termasuk variabel bebas (X) dan terikat (y) dalam dataset. Hal ini dilakukan untuk memudahkan dalam proses encoding, maupun proses komputasinya di dalam analisis atau machine learning.

# mengambil data kolom index ke-0, 1, 2 sebagai X 
X = dataset.iloc[:, :3].values
# mengambil data kolom index ke-3 sebagai y
y = dataset.iloc[:, 3].values

Dari perintah di atas, akan diperoleh tampilan data X nya sebagai berikut.

Data dalam variabel bebas X

serta data y nya seperti di bawah ini.

Data dalam variabel terikat y

Proses Encoding

Setelah kita dapatkan data X dan y nya, proses selanjutnya adalah mengencode kolom pertama (index ke-0) dari X nya yang terkait dengan data nama program studinya. Apabila kita lihat dari data program studi, maka tampak bahwa terdapat 3 nama program studi. Sehingga hasil encoding pada data program studi ini nantinya akan muncul 3 kolom di dalam X. Ketiga kolom ini akan menggantikan kolom program studi. Berikut ini adalah cara encoding terhadap kolom program studi dari X.

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.compose import ColumnTransformer

# setting object untuk proses encoding data prodi (kolom index ke-0) dengan one hot encoder
ct = ColumnTransformer([("program studi", OneHotEncoder(), [0])], remainder = 'passthrough')
# proses encoding terhadap X
X = ct.fit_transform(X)

Untuk melakukan encoding pada kolom program studi di Python, kita bisa menggunakan library ColumnTransformer dan OneHotEncoder yang keduanya ada di dalam package Scikit Learn (sklearn).

Dari proses di atas, kita akan mendapatkan matriks X berbentuk seperti di bawah ini.

Hasil encoding kolom program studi

Bandingkan bentuk matriks pasca encoding dengan sebelumnya! Dalam hal ini, bentuk matriknya berubah. Kolom yang sebelumnya berisi data program studi diganti dengan tiga kolom yang berisi nilai 0 dan 1. Pada baris pertama, nama prodi yang sebelumnya adalah ‘Informatika’ berubah menjadi [0 1 0], demikian pula untuk baris lain yang berisi ‘Informatika’. Adapun untuk prodi ‘Matematika’ berubah menjadi [0 0 1] setelah encoding. Sedangkan prodi ‘Fisika’ menjadi [1 0 0].

Selanjutnya kita lakukan encoding pula untuk data y nya.

labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)

Dikarenakan y ini adalah berupa vektor, maka untuk proses encodingnya cukup dengan menggunakan library LabelEncoder. Hasil encoding dari y ini adalah sebagai berikut.

Hasil encoding y

Berdasarkan hasil encodingnya, tampak bahwa untuk nilai ‘ya’ diganti dengan 1, dan ‘tidak’ diganti dengan 0.

Demikian tutorial singkat tentang bagaimana melakukan encoding data kategori ke dalam numerik menggunakan Python. Semoga bermanfaat. 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