0% menganggap dokumen ini bermanfaat (0 suara)
27 tayangan

BAB 4 - Data Wrangling Python

Bab 4 dokumen tersebut membahas tentang membaca file data menggunakan pandas, termasuk cara membaca berbagai format file, mengakses data tertentu seperti kolom dan baris, menampilkan informasi statistik, serta menangani nilai missing dengan mengisi nilai rata-rata dan median.

Diunggah oleh

ritapermatasari17
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
27 tayangan

BAB 4 - Data Wrangling Python

Bab 4 dokumen tersebut membahas tentang membaca file data menggunakan pandas, termasuk cara membaca berbagai format file, mengakses data tertentu seperti kolom dan baris, menampilkan informasi statistik, serta menangani nilai missing dengan mengisi nilai rata-rata dan median.

Diunggah oleh

ritapermatasari17
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 9

BAB IV – Data Wrangling Python

Membaca file dengan menggunakan pandas


Sebagai salah satu library untuk melakukan proses awal dari analisis data, pandas
juga memiliki kemampuan untuk membaca berbagai macam jenis file. Format yang
bisa dibaca oleh pandas ada berbagai macam, antara lain .txt, .csv, .tsv, dan
lainnya. Pandas tidak hanya bisa membaca file saja, namun juga bisa merubah data
dari file menjadi bentuk dataframe yang akhirnya nanti bisa diakses, diagregasi dan
diolah. Coba praktikan kode di bawah ini :

import pandas as pd

csv_data =
pd.read_csv("https://storage.googleapis.com/dqlab-dataset/shopping_data.csv")

print(csv_data)

Membaca file dengan menggunakan head()


Pada suatu kasus, data yang kita baca cukup banyak atau loading yang lama. Untuk
memastikan data kita terbaca dengan baik dan bisa menampilkan data sebagian
untuk ditampilkan secara benar, kita bisa memakai fungsi head(). Bisa dituliskan
kode di bawah ini untuk prakteknya:

import pandas as pd

csv_data =
pd.read_csv("https://storage.googleapis.com/dqlab-dataset/shopping_data.csv")

print(csv_data.head())

Melakukan akses data kolom


Dalam suatu analisis data ada kalanya kita hanya butuh melakukan akses beberapa
data saja dan tidak perlu harus menampilkan semua data. Pada pandas kita bisa
melakukan akses dalam berbagai kebutuhan. Mulai dari hanya akses kolom tertentu
ataupun baris tertentu. Pada sesi kali ini kita akan mencoba untuk melakukan akses
beberapa kolom tertentu pada suatu dataset.
Pertama yang harus dilakukan untuk melakukan akses kolom adalah mengetahui
nama-nama kolom yang ada. Coba ketikkan kode di bawah ini untuk melihat nama
kolom yang ada.

import pandas as pd

csv_data =
pd.read_csv("https://storage.googleapis.com/dqlab-dataset/shopping_data.csv")

print(csv_data.columns)
Hasil pada panel console akan keluar seperti berikut :

Index(['CustomerID', 'Genre', 'Age', 'Annual Income (k$)',


'Spending Score (1-100)'],
dtype='object')

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("https://storage.googleapis.com/dqlab-dataset/shopping_data.csv")

print(csv_data['Age'])

Melakukan akses data melalui baris


Selain melakukan akses data melalui kolom, dengan menggunakan pandas juga
bisa melakukan akses dengan menggunakan baris. Berbeda dengan akses melalui
kolom, fungsi untuk menampilkan data dari suatu baris adalah fungsi .iloc[i] dimana
[i] menunjukan urutan baris yang akan ditampilkan yang dimana indexnya diawali
dari 0. Coba ketikan code di bawah ini untuk mempermudah :

import pandas as pd

csv_data =
pd.read_csv("https://storage.googleapis.com/dqlab-dataset/shopping_data.csv")

print(csv_data.iloc[5])

Menampilkan suatu data dari baris dan kolom


tertentu
Tidak hanya dengan menentukan dari kolom dan baris, dengan menggunakan
pandas kita juga bisa memanggil suatu data dari suatu baris dan kolom tertentu
dalam satu waktu. Perhatikan dan coba kode di bawah ini:

import pandas as pd

csv_data =
pd.read_csv("https://storage.googleapis.com/dqlab-dataset/shopping_data.csv")

print(csv_data['Age'].iloc[1])

print("Cuplikan Dataset:")

print(csv_data.head())
Menampilkan data dalam range tertentu
Setelah menampilkan suatu kelompok data, bagaimana jika ingin menampilkan data
dari baris ke 5 sampai ke 20 dari suatu dataset? Untuk mengantisipasi hal tersebut,
pandas juga bisa menampilkan data dalam range tertentu, baik range untuk baris
saja, kolom saja, dan range untuk baris dan kolom.
Akses range pada suatu kolom dan baris tertentu, untuk mencobanya silahkan
ketikkan kode di bawah ini :

import pandas as pd

csv_data =
pd.read_csv("https://storage.googleapis.com/dqlab-dataset/shopping_data.csv")

print("Menampilkan data ke 5 sampai kurang dari 10 :")

print(csv_data['Age'].iloc[5:10])

Menampilkan suatu range data tertentu pada suatu baris saja. Cobalah ketikan
kode di bawah ini :

import pandas as pd

csv_data =
pd.read_csv("https://storage.googleapis.com/dqlab-dataset/shopping_data.csv")

print("Menampilkan data ke 5 sampai kurang dari 10 dalam satu baris:")

print(csv_data.iloc[5:10])

Menampilkan informasi statistik dengan


Numpy
Mengetahui informasi statistik pada suatu data sangat penting. Mulai dari distribusi
data, nilai max atau min, hingga standar deviasi dari suatu dataset. Jika datanya
berjumlah dibawah 10 mungkin masih dikerjakan secara manual. Namun,
bayangkan jika datanya sudah mencapai ratusan bahkan ribuan. Tidak mungkin
pastinya untuk dilakukan secara manual. Maka dari itu pentingnya fungsi describe()
pada pandas. Fungsi describe() ini memungkinkan untuk mengetahui informasi
statistik dari suatu dataset secara cepat. Coba untuk ketikkan kode di bawah ini :

import pandas as pd

csv_data =
pd.read_csv("https://storage.googleapis.com/dqlab-dataset/shopping_data.csv")

print(csv_data.describe(include='all'))

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("https://storage.googleapis.com/dqlab-dataset/shopping_data.csv")

print(csv_data.describe(exclude=['O']))

Handling Missing Value


Pada suatu dataset, ada kalanya data yang kita akan kita kelola tidak lengkap. Hal
ini tentunya akan menyulitkan atau membuat hasil analisa tidak akurat.
Penanggulangan akan data yang hilang ini biasa disebut Handling Missing Value.
Penanganan dari nilai yang kosong ini banyak caranya. Sebagai seorang data
science yang berhubungan dengan data yang real, solusi pertama yang benar-benar
kita anjurkan untuk kasus seperti ini adalah melakukan trace kembali ke sumber
data atau memerika ulang record. Terutama jika data itu berasal dari human record.
Sangat disarankan untuk menelusuri kembali agar tidak terjadi kesalahan ketika
sudah mencapai titik analisa. Selain solusi untuk melakukan penelusuran kembali ke
sumberdata, pada ilmu data science juga ada beberapa metode yang bisa dijadikan
solusi untuk menangani kasus ini.

Melakukan pengecekan untuk nilai NULL


yang ada
Dengan menggunakan fungsi pandas, kita tidak perlu melihat satu persatu baris data
untuk mengetahui apakah ada nilai kosong atau NULL/NAN pada suatu dataset.
Bayangkan jika kita memilki 1000 baris data. Apakah kita harus melihat semua baris
data tersebut? Tentu saja tidak. Maka dari itu di pandas disediakan fungsi untuk
mengecek apakah ada data yang kosong. Coba praktikkan kode di bawah ini :

import pandas as pd

csv_data =
pd.read_csv("https://storage.googleapis.com/dqlab-dataset/shopping_data.csv")

print(csv_data.isnull().values.any())

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("https://storage.googleapis.com/dqlab-dataset/shopping_data_missingval
ue.csv")

print(csv_data.isnull().values.any())

Solusi mengisi Missing Value


Sebelum mengenal lebih banyak mengenai Solusi yang biasa ada pada kasus-kasus
data science.
Skema yang biasanya sering dalam pengelolaan data.
GAMBAR 4.1
Dalam diagram diatas, perlu diketahui bahwa kasus kehilangan data bisa diatasi
dengan berbagai cara. Bahkan, melakukan penghapusan data juga merupakan
solusi yang bisa menjadi pilihan apabila jika dirasa mengisi nilai kosong akan
memberikan pengaruh yang kurang bagus terhadap analisa, atau apabila
pertimbangan data yang dihapus atau data yang hilang sedikit dan tidak
memberikan terlalu banyak sumbangsih untuk analisa yang akan dilakukan.
Penghapusan data bisa langsung pada baris data tersebut atau langsung satu kolom
data. Pada solusi kedua yaitu menggunakan imputation (pengisian data yang
kosong) bisa tergantung dari permasalahannya. Khusus untuk masalah yang
berhubungan forecasting atau peramalan tergantung dari data yang ada (lebih
lengkap bisa dilihat pada gambar). Khusus untuk general problem tergantung jenis
datanya. Jika yang hilang data kategorikal atau bersifat string bisa menggunakna
relasi antar kolom dengan Logistic Regression, jika numerical bisa menggunakan
statistik sederhana dan linear regression. Pada sesi kali ini kita akan mencoba
menangani data hilang dengan statistik sederhana, Mean dan Median.

Mengisi dengan Mean


Salah satu metode yang bisa dikatakan sebagai solusi yang umum pada kasus
general data science adalah mengisi data kosong dengan menggunakan mean dari
masing-masing kolom. Pertama kita harus menentukan mean dari masing-masing
kolom. Pada pandas terdapat fungsi mean() untuk menentukan nilai mean dari
masing-masing kolom. Mean sendiri digunakan untuk data yang memiliki sedikit sifat
outlier/noisy/anomali dalam sebaran datanya maupun isinya. Coba ketikkan kode di
bawah ini :

import pandas as pd

csv_data =
pd.read_csv("https://storage.googleapis.com/dqlab-dataset/shopping_data_missingval
ue.csv")

print(csv_data.mean())

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("https://storage.googleapis.com/dqlab-dataset/shopping_data_missingval
ue.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))

Mengisi dengan Median


Berbeda dengan mean pada sesi sebelumnya, median digunakan untuk data-data
yang memiliki sifat outlier yang kuat. Kenapa median dipilih? Median merupakan
nilai tengah yang artinya bukan hasil dari perhitungan yang melibatkan data outlier.
Pada beberapa kasus, data outlier dianggap mengganggu dan sering dianggap
noisy karena bisa mempengaruhi distribusi kelas dan mengganggu analisa pada
klasterisasi (clustering).

import pandas as pd

csv_data =
pd.read_csv("https://storage.googleapis.com/dqlab-dataset/shopping_data_missingval
ue.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("https://storage.googleapis.com/dqlab-dataset/shopping_data_missingval
ue.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))

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 :
GAMBAR 4.2
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 pen

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.
GAMBAR 4.3
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.
GAMBAR 4.4

Decimal Scaling
GAMBAR 4.5

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

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
GAMBAR 4.7

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("https://storage.googleapis.com/dqlab-dataset/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:

X = array[:,2:5] #memisahkan fitur dari dataset.


Y = array[:,0:1] #memisahkan class dari dataset

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

min_max_scaler = preprocessing.MinMaxScaler(feature_range=(0,1)) #inisialisasi


normalisasi MinMax
data = min_max_scaler.fit_transform(X) #transformasi MinMax untuk fitur
dataset = pd.DataFrame({'Age':data[:,0],'Income':data[:,1],'Spending
Score':data[:,2],'Customer ID':array[:,0],'Gender':array[:,1]})

print("dataset setelah dinormalisasi :")


print(dataset.head(10))

Anda mungkin juga menyukai