import pandas as pd
csv_data = pd.read_csv("shopping_data.csv")
print(csv_data)
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :
import pandas as pd
csv_data = pd.read_csv("shopping_data.csv")
print(csv_data.head())
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :
csv_data = pd.read_csv("shopping_data.csv")
print(csv_data.columns)
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :
Note : Pada dataset ini ada 5 kolom termasuk class, dimana 4 kolom merupakan data
numerik dan 1 kolom merupakan data string. Pada praktek selanjutnya kita akan
mencoba mengakses data age. Untuk melakukannya coba tuliskan kode di bawah ini :
import pandas as pd
csv_data = pd.read_csv("shopping_data.csv")
print(csv_data['Age'])
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :
0 19
1 21
2 20
3 23
4 31
5 22
6 35
7 23
8 64
9 30
10 67
11 35
12 58
13 24
14 37
15 22
16 35
17 20
18 52
19 35
20 35
21 25
22 46
23 31
24 54
25 29
26 45
27 35
28 40
29 23
..
170 40
171 28
172 36
173 36
174 52
175 30
176 58
177 27
178 59
179 35
180 37
181 32
182 46
183 29
184 41
185 30
186 54
187 28
188 41
189 36
190 34
191 32
192 33
193 38
194 47
195 35
196 45
197 32
198 32
199 30
Name: Age, Length: 200, dtype: int64
import pandas as pd
csv_data = pd.read_csv("shopping_data.csv")
print(csv_data.iloc[5])
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :
CustomerID 6
Genre Female
Age 22
Annual Income (k$) 17
Spending Score (1-100) 76
Name: 5, dtype: object
import pandas as pd
csv_data = pd.read_csv("shopping_data.csv")
print(csv_data['Age'].iloc[1])
print("Cuplikan Dataset:")
print(csv_data.head())
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :
21
Cuplikan Dataset:
CustomerID Genre Age Annual Income (k$) Spending Score (1-100)
0 1 Male 19 15 39
1 2 Male 21 15 81
2 3 Female 20 16 6
3 4 Female 23 16 77
4 5 Female 31 17 40
import pandas as pd
csv_data = pd.read_csv("shopping_data.csv")
print(csv_data['Age'].iloc[5:10])
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :
Menampilkan data ke 5 sampai kurang dari 10 :
5 22
6 35
7 23
8 64
9 30
Name: Age, dtype: int64
Menampilkan suatu range data tertentu pada suatu baris saja. Cobalah ketikan kode di
bawah ini :
import pandas as pd
csv_data = pd.read_csv("shopping_data.csv")
print(csv_data.iloc[5:10])
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :
csv_data = pd.read_csv("shopping_data.csv")
print(csv_data.describe(include='all'))
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :
Note : Banyak nilai NaN yang tampil. Hal itu karena pada dataset ada format data string
yang akhirnya memunculkan format NaN.
Untuk meminimalisir hal tersebut dan memfilter hanya data numerical saja,
digunakan exclude=[‘O’], dimana fungsi itu akan mengabaikan data yang non-numerical
untuk diproses. Coba implementasikan code di bawah ini:
import pandas as pd
csv_data = pd.read_csv("shopping_data.csv")
print(csv_data.describe(exclude=['O']))
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :
import pandas as pd
csv_data = pd.read_csv("http://academy.dqlab.id/dataset/shopping_data.csv")
print(csv_data.isnull().values.any())
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :
False
Note : data yang digunakan merupakan data yang lengkap, maka dari itu output yang
dihasilkan False. Coba Sekarang ganti dengan dataset yang memang terdapat data yang
kosong. Coba ketikkan kode di bawah ini :
import pandas as pd
csv_data = pd.read_csv("shopping_data_missingvalue.csv")
print(csv_data.isnull().values.any())
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :
True
csv_data = pd.read_csv("shopping_data_missingvalue.csv")
print(csv_data.mean())
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :
CustomerID 100.500000
Age 38.939698
Annual Income (k$) 61.005051
Spending Score (1-100) 50.489899
dtype: float64
Fungsi mean sendiri berfungsi untuk menampilkan nilai mean (rata-rata) dari setiap
kolom. Nilai inilah nanti yang akan mengisi nilai kosong dari dataset yang mengalami
kasus missing value. Untuk mengisi nilai yang kosong menggunakan fungsi fillna(), coba
ketikkan kode di bawah ini :
import pandas as pd
csv_data = pd.read_csv("shopping_data_missingvalue.csv")
print(csv_data.mean())
print("Dataset yang masih terdapat nilai kosong ! :")
print(csv_data.head(10))
csv_data=csv_data.fillna(csv_data.mean())
print("Dataset yang sudah diproses Handling Missing Values dengan Mean :")
print(csv_data.head(10))
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :
CustomerID 100.500000
Age 38.939698
Annual Income (k$) 61.005051
Spending Score (1-100) 50.489899
dtype: float64
Dataset yang masih terdapat nilai kosong ! :
CustomerID Genre Age Annual Income (k$) Spending Score (1-100)
0 1 Male 19.0 15.0 39.0
1 2 Male NaN 15.0 81.0
2 3 Female 20.0 NaN 6.0
3 4 Female 23.0 16.0 77.0
4 5 Female 31.0 17.0 NaN
5 6 Female 22.0 NaN 76.0
6 7 Female 35.0 18.0 6.0
7 8 Female 23.0 18.0 94.0
8 9 Male 64.0 19.0 NaN
9 10 Female 30.0 19.0 72.0
Dataset yang sudah diproses Handling Missing Values dengan Mean :
CustomerID Genre Age Annual Income (k$) Spending Score (1-100)
0 1 Male 19.000000 15.000000 39.000000
1 2 Male 38.939698 15.000000 81.000000
2 3 Female 20.000000 61.005051 6.000000
3 4 Female 23.000000 16.000000 77.000000
4 5 Female 31.000000 17.000000 50.489899
5 6 Female 22.000000 61.005051 76.000000
6 7 Female 35.000000 18.000000 6.000000
7 8 Female 23.000000 18.000000 94.000000
8 9 Male 64.000000 19.000000 50.489899
9 10 Female 30.000000 19.000000 72.000000
import pandas as pd
csv_data = pd.read_csv("shopping_data_missingvalue.csv")
print(csv_data.median())
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :
CustomerID 100.5
Age 36.0
Annual Income (k$) 62.0
Spending Score (1-100) 50.0
dtype: float64
Sama dengan sesi sebelumnya dengan mean(), gunakan kode di bawah ini untuk mengisi
nilai yang kosong menggunakan fungsi fillna() :
import pandas as pd
csv_data = pd.read_csv("shopping_data_missingvalue.csv")
print("Dataset yang masih terdapat nilai kosong ! :")
print(csv_data.head(10))
csv_data=csv_data.fillna(csv_data.median())
print("Dataset yang sudah diproses Handling Missing Values dengan Median :")
print(csv_data.head(10))
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :
Normalisasi Data
Terkadang pada beberapa kasus, 1 kolom dengan kolom yang lain memiliki skala yang
berbeda. Seperti cuplikan gambar di bawah ini :
No Usia Masa Kerja (Tahun) Gaji
1 50 30 10000000
2 30 10 5000000
Antara Usia dan Masa Kerja masih memiliki range yang sama dalam skala puluhan.
Namun, jika kolom Usia dan Masa Kerja dibandingkan dengan Gaji memiliki range nilai
yang berbeda, dimana Usia dan Masa Kerja memiliki range puluhan dan Gaji mempunyai
range nilai jutaan. Memang terlihat sederhana, namun hal ini bisa menjadi masalah besar
dalam contoh kasus klasterisasi atau klasifikasi. Masuk pada kasus K-means yang sudah
pernah dibahas sebelumnya. K-means merupakan algoritma klasterisasi (clustering) yang
menggunakan perhitungan jarak dalam prosesnya. Sekarang coba bayangkan :
Jika tidak ada normalisasi, maka jelas perhitungan kmeans diatas akan tergantung pada
Gaji. Kenapa? Karena gaji berdomain jutaan dan 2 kolom lainnya hanya berdomain
puluhan. Berapapun usia dan masa kerja seseorang tidak akan berpengaruh terhadap
penilaian suatu perusahaan. Perbedaan skala pada setiap kolom ini merupakan hal yang
sangat wajar dan sering terjadi dan inilah pentingnya normalisasi. Normalisasi sangat
penting, terutama untuk yang menggunakan perhitungan jarak dengan menggunakan
metode apapun.
Next >
Metode Normalisasi
Ada berbagai macam metode normalisasi, seperti MinMax, Zscore, Decimal Scaling,
Sigmoid, dan Softmax. Pemakaiannya tergantung pada kebutuhan dari dataset dan jenis
analisa yang dilakukan.
MinMax
Metode Min-Max merupakan metode yang cukup bisa dibayangkan karena termasuk
metode normalisasi yang bersifat linier dengan data aslinya. Namun, metode ini bisa
menyebabkan out of bound pada beberapa kasus.
Kenapa bisa terjadi out of bound? Out of Bound terjadi apabila ada data baru masuk,
dimana data tersebut melebihi nilai maksimal atau nilai minimal dari data yang sudah
ada. Secara otomatis, perhitungan yang berlaku pada data yang sudah diperoleh tadi
harus diulangi lagi semuanya dengan data baru yang masuk atau data baru yang
mempunyai nilai maksimal/minimum yang melebihi tadi tidak bisa diproses. Karena
kekurangan inilah MinMax tidak cocok untuk analisa real time / evolving system.
Dimungkinkan dalam kasus-kasus terjadi kasus out of bound pada MinMax.
MinMax sangat dianjurkan untuk kasus-kasus berbasis time frame analisis dan
forecasting. Perhitungan dari metode ini cukup mengurangi data yang asli dengan nilai
minimal dari fitur tersebut, kemudian hasil tersebut dikalikan dari hasil pengurangan nilai
maximal yang baru dengan nilai minimal yang baru dan kemudian dibagi dengan nilai
max dan min data di setiap fitur terakhir ditambah dengan nilai min yang baru.
Z-Score
Zscore adalah metode yang sering digunakan dalam berbagai penelitian berbasis data
mining atau data science. Z-score merupakan metode normalisasi yang berdasarkan
mean (nilai rata-rata) dan standard deviation (deviasi standar) dari data. Kenapa Z-Score
sangat populer? Selain tidak banyak variabel yang diset dalam perhitungannya. Z-Score
sangat dinamis dalam melakukan perhitungan normalisasi. Kelemahan dari Z-Score
adalah prosesnya akan terulang lagi jika ada data baru yang masuk. Selain itu elemen
yang dibutuhkan untuk perhitungan Z-Score juga membutuhkan proses yang cukup lama
baik standar deviation ataupun rata-rata dari setiap kolom.
Decimal Scaling
Softmax
Softmax merupakan metode normalisasi pengembangan transformasi secara linier.
Output range-nya adalah 0-1. Metode ini sangat berguna pada saat data yang ada
melibatkan data outlier.
Sigmoid
Sigmoidal merupakan metode normalization melakukan normalisasi data secara
nonlinier ke dalam range -1 s/d 1 dengan menggunakan fungsi sigmoid. Metode ini sangat
berguna pada saat data yang ada melibatkan data outlier. Data outlier adalah data yang
keluar jauh dari jangkauan data lainnya
Next >
Praktek Normalisasi menggunakan Scikit
Learn pada Python
Scikit Learn merupakan library pada python yang digunakan untuk machine learning dan
data science. Salah satu library yang selalu menjadi favorit dan komunitasnya sangat
kuat. Scikit-learn sendiri tidak hanya untuk analytics saja, namun juga untuk pre-
processing, feature selection, dan proses analysis lainnya. Melanjutkan dari sesi
normalisasi data, mari kita praktekan kode di bawah ini :
import pandas as pd
import numpy as np
from sklearn import preprocessing
csv_data = pd.read_csv("shopping_data.csv")
array = csv_data.values
X merupakan matriks yang berisi fitur dataset yang akan digunakan dalam machine
learning, baik untuk regresi, klasifikasi, pengklusteran, atau normalisasi
Pada kasus kita, X berisi fitur-fitur yang digunakan untuk dinormalisasi dengan teknik
min-max scaler
Ketik lanjutan dari kode di atas:
dataset=pd.DataFrame({'Customer ID':array[:,0],'Gender':array[:,1],'Age':array[:,2
],'Income':array[:,3],'Spending Score':array[:,4]})
print("dataset sebelum dinormalisasi :")
print(dataset.head(10))
Klik Tombol
Hasil pada panel console akan keluar seperti berikut :