Normalisasi data di pandas python

3 Metode Normalisasi Data (Feature Scaling) di Python

Posted by

Normalisasi data merupakan salah satu teknik yang penting untuk dipahami dalam praproses data. Dalam analisis dan eksplorasi data sering kali kita menemukan banyak features atau variabel di dalam dataset yang akan kita analisis. Bukan hal yang jarang terjadi jika rentang nilai antara variabel tersebut sangat jauh, misalnya umur yang normalnya hanya berkisar di bawah 100 dan gaji yang kebanyakan bernilai puluhan ribu, ratusan ribu atau jutaan rupiah.

Lalu apa hubungannya dengan normalisasi data?

Sekarang mari kita bahas.

Apa itu normalisasi data?

Normalisasi data adalah proses membuat beberapa variabel memiliki rentang nilai yang sama, tidak ada yang terlalu besar maupun terlalu kecil sehingga dapat membuat analisis statistik menjadi lebih mudah. Perhatikan dua tabel berikut.

Contoh normalisasi data

Pada tabel di atas, kita lihat bahwa perbedaan rentang nilai dari variabel terlihat sangat jauh. Variabel umur memiliki kisaran nilai dari 0 sampai 100, sementara variabel gaji berkisar dari 0 sampai 500.000. Ini berarti variabel gaji bernilai sekitar 1000 kali lipat lebih besar dibandingkan variabel umur.

Baca juga: 3 Contoh Penerapan Data Formatting dengan Pandas

Ketika kita melakukan analisis lebih jauh seperti misalnya pemodelan menggunakan linear regression, variabel gaji akan lebih mempengaruhi hasil dikarenakan nilainya yang lebih besar. Model regresi linear akan menimbang gaji dengan lebih berat dari pada umur.

Untuk menghindari kondisi semacam ini, kita bisa menormalisasi dua variabel tersebut menjadi nilai yang memiliki rentang yang sama yaitu dari 0 sampai 1 seperti pada tabel di sebelahnya.

Metode normalisasi data

Ada beberapa metode yang dapat dilakukan untuk normalisasi data.

Simple Feature Scaling

Metode normalisasi data pertama yaitu simple feature scaling. Formula yang digunakan sangat sederhana yaitu membagi setiap nilai dengan nilai maksimum pada fitur tersebut.

Metode normalisasi data - simple feature scaling

Cara ini akan menghasilkan nilai baru hasil normalisasi yang berkisar antara 0 dan 1. Contoh pada tabel dengan normalisasi sebelumnya menggunakan metode ini, dimana diasumsikan bahwa nilai maksimum pada dataset tersebut adalah 100 untuk variabel Umur dan 500000 untuk variabel Gaji.

Di Pandas Python, kita dapat menerapkannya dengan kode berikut.

df["Umur"] = df["Umur"] / df["Umur"].max()
df["Gaji"] = df["Gaji"] / df["Gaji"].max()

Method max() digunakan untuk mengambil nilai maksimum dari fitur atau kolom tersebut.

Baca juga: Cara Import dan Export Data di Python

Min-Max

Metode normalisasi data selanjutnya adalah Min-Max. Cara kerjanya setiap nilai pada sebuah fitur dikurangi dengan nilai minimum fitur tersebut, kemudian dibagi dengan rentang nilai atau nilai maksimum dikurangi nilai minimum dari fitur tersebut.

Cara ini juga akan menghasilkan nilai baru hasil normalisasi antara 0 sampai 1.

Berikut kode Python untuk mengaplikasikan metode Min-Max.

df["Umur"] = (df["Umur"] - df["Umur"].min()) / (df["Umur"].max() – df["Umur"].min())
df["Gaji"] = (df["Gaji"] - df["Gaji"].min()) / (df["Gaji"].max() – df["Gaji"].min())

Sama seperti method max(), method min() digunakan untuk mengambil nilai minimum dari fitur tersebut.

Baca juga: Cara Binning Data di Python dengan Pandas

Z-score

Metode ketiga adalah Z-score atau disebut juga standard score. Dengan formula ini, masing-masing nilai pada fitur dikurangi dengan miu (µ) yang merupakan nilai rata-rata fitur, kemudian dibagi dengan sigma (σ) yang merupakan standar deviasi.

Cara ini akan menghasilkan nilai baru hasil normalisasi yang berkisar di angka 0 dan biasanya ada pada rentang antara -3 dan 3 tetapi bisa juga lebih tinggi atau lebih rendah.

Berikut contoh penerapannya di Python.

df["Umur"] = (df["Umur"] - df["Umur"].mean()) / df["Umur"].std()
df["Gaji"] = (df["Gaji"] - df["Gaji"].mean()) / df["Gaji"].std()

Method mean() akan menghasilkan nilai rata-rata dari sebuah fitur di dataset, sedangkan std() akan menghasilkan nilai standard deviasi dari sebuah fitur.

Semoga bermanfaat!

modul data science ilmudatapy