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

Python For Data Analysis - UNIBI

Diunggah oleh

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

Python For Data Analysis - UNIBI

Diunggah oleh

Muhammad Alfi
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 204

Python For Data Analysis

Python for Data


Science
By: Anastasia Sherin
Certified Python for Data Science
Associate 9-10 April 2022
Apa yang ada dalam Modul Belajar
ini?
1. Introduction to Python for Data
Science
2. Google Colab
3. Basic Python
4. Pandas Library
5. Numpy Library
6. Plotly Library
7. Sklearn Library

Modul Pelatihan CPDSA


2
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Introduction
What is
Python?
● High Level Programming Language, Python memiliki syntax yang simpel dan gampang
diinterpretasikan sehingga mudah dipelajari oleh orang-orang yang tidak punya
background engineering sekalipun.

● Python merupakan bahasa pemrograman serbaguna yang dapat digunakan untuk berbagai
tujuan, seperti membuat software, web development, automasi, dan data science.

● Digunakan oleh perusahaan-perusahaan besar seperti Google, Amazon, Facebook, Uber, etc

Modul Pelatihan CPDSA


4
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Why Python for Data
Science?
● Open Source, artinya setiap orang dapat menggunakan & develop bahasa pemrograman
python, sehingga banyak package-package atau tools yang sangat berguna untuk Data
Science.

● Tools-tools matematika & statistika yang lengkap disediakan oleh library-library python,
juga package-package machine learning.

● Python memiliki beberapa package untuk data visualization yang sangat solid, seperti
matplotlib, seaborn, ggplot, dan plotly.

Modul Pelatihan CPDSA


5
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Science Flowchart

Understanding Data Data Exploratory


Problem Collection Cleaning Data
Analysis

Model Building
Deployment Interpretation
Evaluation Model

Pada python, kita menggunakan package pandas untuk pengolahan data, seperti data collection, dan data cleaning.
Kemudian menggunakan library plotly untuk EDA dan interpretasi model. Library sklearn digunakan untuk hal-hal
yang berhubungan dengan machine learning, seperti membuat model, evaluasi model, dan data preparation. Kita
menggunakan numpy sebagai tools yang digunakan setiap ada perhitungan yang berhubungan dengan array dan
matriks, dan sebagai support untuk package lainnya.

Modul Pelatihan CPDSA


6
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Google
Colab
Google Colab

1. Pergi ke situs
https://colab.research.google.co
m
2. Pilih “New Notebook”
3. Kita siap untuk membuat kode
baru.

Modul Pelatihan CPDSA


8
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Block Cell untuk Google Colab, berbeda dengan
pythonGoogle Colab memiliki struktur kode yang dapat
biasa,
di
run blok-per blok
nya

Tampilan awal Google


Colab.
Modul Pelatihan CPDSA
9
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Tombol
untuk
menjalankan blok Tombol untuk
kode. menambah
blok kode
baru

Tampilan awal Google


Colab.
Modul Pelatihan CPDSA
10
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Dapat juga digunakan shortcut
untuk
menjalankan blok yang
Tombol untuk
dipilih:
menambah blok kode
shift +
baru
enter
ctrl +
enter

Modul Pelatihan CPDSA


11
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Python
Basics
Overview

Pada Python Basics, akan dipelajari beberapa hal


berikut.

● Python Data Types


● String, Integer, Float
● Boolean
● List, Tuple, Dictionary
● Conditional (if-else)
● Looping
● Functions
● Import Module

Modul Pelatihan CPDSA


13
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Python Data
Types Text str
Tipe data pada bahasa pemrograman
Numerik int, float, complex
adalah konsep yang penting.
Urutan list, tuple , range
Variabel dapat menyimpan berbagai tipe
data, dan tipe data yang berbeda memiliki Mapping dict
tujuan/fungsi yang berbeda.
Himpunan / Set set, frozenset
Tipe data bawaan dari python adalah:
Boolean bool

Biner bytes, bytearray, memoryview

Modul Pelatihan CPDSA


14
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
String
s
Tipe data strings str dapat dikenali dengan tanda kutipnya, kutip satu maupun kutip dua,
atau seperti
"Hello, World!"

ataupun

'Hello, World'

Modul Pelatihan CPDSA


15
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
String
s
Terkadang didalam string bisa saja kita memerlukan tanda petik, tetapi string kita bisa jadi tidak
terbaca.

Ada dua cara untuk menangani ini,


yaitu:

1. Menggunakan kutip dua, atau


2. Menggunakan backslash \.

Modul Pelatihan CPDSA


16
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
String
s
Beberapa fungsi lain dari
backlash.

Modul Pelatihan CPDSA


17
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
String
s
● String juga dapat dilihat sebagai kumpulan terurut dari character (huruf), sehingga kita dapat
melakukan slicing dan indexing ke string. Tetapi kita tidak bisa mengupdate nilai di string
seperti kita mengupdate nilai di lists.

● String memiliki beberapa method untuk membantu kita, seperti string.upper(),


string.lower(), string.title(), dan method yang digunakan untuk mengubah
string menjadi list berisi string dan vice versa, seperti string.split()dan
string.join()

Modul Pelatihan CPDSA


18
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
String
s
string.format()merupakan salah satu method terbaik untuk memasukkan variabel ke
string, perhatikan kode berikut.

Dapat dilihat bahwa {} merupakan placeholder untuk variabel yang nantinya akan di
isi.

Modul Pelatihan CPDSA


19
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Variable
Assignment
cloud = 'white'

Variable Assignment: kita membuat variabel bernamacloud dan memasukkan strings


'white'
menggunakan simbol =, yang disebut sebagai assignment operator.

Tidak seperti C++ atau Java, kita tidak perlu mendeklarasikan terlebih dahulu variabel cloud dan
tipe variabelnya, python otomatis menangani itu semua.

Kita dapat menampilkan isi variabel menggunakan print(nama_variabel).

Modul Pelatihan CPDSA


20
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Variable
Assignment
Ada beberapa hal yang harus diperhatikan ketika membuat nama suatu variabel:

● Case-sensitive, variabel bernama ar , Ar, aR, dan AR akan dianggap berbeda pada python.

● Variabel pada python tidak dapat memiliki spasi ataupun dash, a r = 5 dan a-r = 5
akan mengeluarkan syntax error.

● Variabel pada python dapat dipisahkan menggunakan underscore, contoh: a_r = 5.

● Variabel pada python harus diawali dengan alfabet, tidak dapat berawal dengan angka,
1a = 'ar'
akan menghasilkan syntax error.

Modul Pelatihan CPDSA


21
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Comment

Line pada kode dengan tanda # di depannya merupakan comment atau catatan, line ini tidak
dianggap sebagai bagian dari program dan biasanya digunakan untuk catatan/petunjuk pada
pemrogramannya.

#menulis hello world

Modul Pelatihan CPDSA


22
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Numerical Data
Types
Terdapat tiga jenis tipe data numerik, dan yang akan dibahas sekarang adalah integer dan float.
Integer
atau int merupakan tipe data yang menyimpan bilangan
bulat.
p = 5

Sedangkan float menyimpan bilangan


real/desimal.
q = 5.5

Modul Pelatihan CPDSA


23
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Checking & Converting Data
Types
Untuk mengecek tipe data apa yang disimpan, kita dapat
menggunakan:

print(type(nama_variabel))
Tipe data numerik int dan float dapat diubah menjadi string
seperti menggunakan
str(nama_variabel_integer_atau_float)

Kita juga dapat menukar tipe data int dan float seperti
berikut:
int(nama_variabel_float)
float(nama_variabel_int)

Modul Pelatihan CPDSA


24
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Numerical Data
Operator
Kita dapat melakukan operasi matematika untuk data numerik,
misal
a = 5
b = 2

maka kita dapat melakukan operasi tambah, kali, kurang, dll. seperti
berikut
print(a+b)
print(a-b)

Kita juga dapat melakukan reassign/update pada a dengan cara


variabel berikut.
a = a + 2

Slide berikut berisi tabel lengkap operator apa saja yang ada di
python.
Modul Pelatihan CPDSA
25
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Operator Nama Deskripsi

a+b Penjumlahan Menjumlahkan nilai a dan b

a-b Pengurangan Selisih dari a dan b

a*b Perkalian Perkalian antara a dan b

a/b Pembagian Sejati Pembagian a dan b

a // b Pembagian Floor Pembagian a dan b, dan hilangkan nilai desimalnya.

a%b Modulus Nilai integer sisa dari a dibagi b.

a ** b Eksponen a pangkat b

-a Negasi Nilai negatif dari a

Modul Pelatihan CPDSA


26
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Text Data Operator
Syntax Output
String dapat menggunakan dua
operator
matematika, + dan * .
x + y 'nama saya budi'

yaitu Misal
x*z 'nama sayanama sayanama saya'
x = 'nama saya'
y = 'budi' y*z 'budibudibudi'
z = 3
y + str(z) 'budi3'
#z harus diubah menjadi float

print('z = ' + str(z)) z = 3

Modul Pelatihan CPDSA


27
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Exercise
1
Jika

a = 5
b = 2

Bagaimana cara menukar nilai a dan b?

Output yang diinginkan adalah a = 2 dan b


= 5.

Modul Pelatihan CPDSA


28
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Booleans

Booleans merupakan salah satu tipe data di Python, Tipe data ini memiliki dua kemungkinan, yaitu
True dan False. Contohnya adalah:

have_umbrella = False

have_hood = False

is_workday = True

Modul Pelatihan CPDSA


29
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Booleans Operator

Terdapat tiga operator boolean di python, yaitu and, or, dan not. and dan or digunakan
Operator
menggabungkan dua nilai boolean sebagai untuk
berikut.
and True False or True False

True True False True True True

False False False False True False

Bila and dan or berada dalam satu baris kode, maka and akan diprioritaskan terlebih
dahulu.
Contoh: True or True and False akan menjadi
True.
Modul Pelatihan CPDSA
30
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Booleans Operator

Sedangkan operator not merupakan not True adalah False, dan not False adalah
negasi, True.
Misal
Syntax Output
is_workday = True Not True False

Maka print(not is_workday)akan memberi output Not False True


False.

Modul Pelatihan CPDSA


31
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Comparison Operator

Kita juga sering mendapat nilai boolean dari comparison operator, bukan assign langsung.
Contoh:
print(3 >= 2) akan menghasilkan output
True.
Operasi Deskripsi Operasi Deskripsi

a == b a sama dengan b a != b a tidak sama dengan b

a<b a kurang dari b a>b a lebih besar dari b

a <= b a kurang dari atau a >= b a lebih besar atau


sama dengan b sama dengan b

Modul Pelatihan CPDSA


32
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Booleans

Kita juga bisa menulis ekspresi boolean dengan buka-tutup kurung untuk menentukan prioritas mana
yang harus di cek duluan, hal ini juga akan lebih aman dan terlihat lebih intuitif. Buka-tutup kurung ini
juga memungkinkan kita untuk menulis ekspresi ini menjadi beberapa baris.

have_umbrella = False
rain_level = 3
have_hood = False
is_workday = True

prepared_for_weather = (have_umbrella or
(rain_level < 5 and have_hood) or not
(rain_level > 0 and is_workday))

Modul Pelatihan CPDSA


33
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Converting To
Booleans
Variabel string dan angka dapat dikonversi menjadi boolean menggunakan fungsi bool(). Semua
integer dan float dianggap True kecuali nilai 0, dan semua string dianggap True kecuali string kosong.

Modul Pelatihan CPDSA


34
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Lists Data
Types
list merupakan kumpulan value atau nilai yang terurut. Kita dapat membuat kumpulan string,
integer,
bahkan list lain menggunakan kurung kotak.

prima = [1,2,3,5,7]

planet = ['merkurius', 'venus', 'bumi','mars']

kartu = [['J', 'K', '9'], ['As', '10', '2']]

list_kartu = [['Ani','Budi','Candra'],['J',
'K', '9'], ['As', '10', '2']]

Modul Pelatihan CPDSA


35
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
List
s
Untuk mengakses elemen dalam list, kita menggunakan indeks. Di python, elemen pertama pada
list memiliki indeks 0.

Kita juga dapat mengakses elemen di akhir dari list dengan memakai indeks
negatif.

Modul Pelatihan CPDSA


36
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
List
s
Slicing merupakan proses untuk mengambil sebagian list berdasarkan
index.

planet[0:3] berarti kita mengambil elemen dari list planet dari indeks 0 sampai indeks 2,
indeks 3 tidak termasuk, dan bila kita tidak spesifisikkan nilai indeks pada awal/akhir, python
akan mengasumsikan dari ujung listnya.

Modul Pelatihan CPDSA


37
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
List
s
Nilai pada list dapat diupdate dan diganti, kita cukup menspesifikkan indeks dan assign nilai yang
baru.

Atau mengubah beberapa nilai


sekaligus.

Modul Pelatihan CPDSA


38
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
List
s
List juga merupakan object, yang berarti kita bisa memanggil method (function) pada list
tersebut, menggunakan dot (.).

● Append, kita dapat menambah nilai/elemen baru ke dalam list menggunakan method
list.append.

Modul Pelatihan CPDSA


39
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
List
s
● Pop, method list.pop() digunakan untuk menghapus elemen terakhir dari sebuah
list.

● Searching dalam list dapat dilakukan menggunakan method list.index(*args).


Kita memperoleh output berupa index.

Modul Pelatihan CPDSA


40
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
List
s
Tetapi bila string yang di search tidak dalam list, kita akan mendapat error seperti
ini.

Untuk menghindari hal ini, kita dapat menggunakan operator


in.

Modul Pelatihan CPDSA


41
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
List
s
Ada beberapa function python yang dapat bekerja dengan list,
seperti
● len(planet), untuk menampilkan berapa banyak elemen di dalam list
● sorted(planet) planet.
, untuk menyortir berdasarkan
alfabet.
● sum(prima), menjumlahkan seluruh elemen di dalam list
● max(prima),prima.
meng-output elemen terbesar dari list
prima.

Modul Pelatihan CPDSA


42
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Dictionaries

Dictionary merupakan salah satu struktur data di python yang mengaitkan kata kunci ke nilai\value
nya.

price = {'book': 10, 'pencil': 3, 'eraser': 3}

Disini kita mendefinisikan dictionary bernama price, untuk mengakses nilai didalamnya, kita
dapat memanggil menggunakan kata kuncinya.

Modul Pelatihan CPDSA


43
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Dictionaries

● Kita dapat meng-assign kata kunci baru ke dictionary atau re-assign yang sudah ada
menggunakan
dictionary[key] = value.
● Dictionary baru dapat dibuat juga menggunakan dictionary comprehensions, sebagai berikut.

● Beberapa method dictionary yang berguna adalah dict.items()dan


dict.values().

Modul Pelatihan CPDSA


44
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Dictionaries

dict.items()digunakan untuk mengakses key dan value yang ada sebagai pasangan. Agar
lebih mudah digunakan, kita ubah price.items()disini menjadi list.

Sedangkan dict.values()digunakan untuk mengakses seluruh values yang


ada.

Modul Pelatihan CPDSA


45
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Conditionals

Boolean paling berguna bila digunakan beriringan dengan kondisional menggunakan if, else, dan elif. Apa
itu kondisional? Kondisional merupakan bagian dari kode yang hanya akan berjalan bila suatu syarat (boolean
bernilai True) terpenuhi. Perhatikan kode berikut.

number = 5
if number % 2 == 0:
print('even')

elif number % 2 == 1:
print('odd')

else:
print('error')

Modul Pelatihan CPDSA


46
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Conditionals

Kondisional pertama ditulis dengan awalan if, dan diikuti dengan argumen boolean, bila bernilai True,
maka blok code dengan indent di bawahnya akan jalan (disini program akan meng-output ‘even’). Bila
boolean pada if bernilai False, maka dilanjutkan ke elif, yang merupakan singkatan dari else if
yang memiliki argumen boolean kedua. Serupa dengan if, bila bernilai True, maka code block di
bawahnya
akan dijalankan, dan bila False lanjut ke tahap berikutnya. Argumen
else dijalankan bila semua
argumen
boolean sebelumnya bernilai False, pada kasus ini, bila number yang di assign merupakan
desimal.
Pada kondisional, elif dan else merupakan opsional, dan kita bisa elif sesuai kebutuhan,
tetapi if danelse hanya bisa menambah
satu.

Modul Pelatihan CPDSA


47
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Python Loops

Loops digunakan untuk menjalankan bagian kode yang sama berulang kali. Python memiliki dua
jenis loop, yaitu

1. for loop, yang digunakan untuk mengiterasi atas suatu kumpulan terurut (list, tuple string,
dll).
2. while loop, yang akan terus berjalan selama kondisionalnya terpenuhi.

Modul Pelatihan CPDSA


48
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Python Loops

Untuk for loop, kita memerlukan dua hal, yaitu

1. Nama variabel iterasi yang akan dipakai (biasanya i), dan


2. Kumpulan terurut yang akan di iterasi (disini adalah
planet).
planet = ['merkurius', 'venus', 'bumi','mars']
for i in planet:
print(i, end = ' ') #print di satu baris

Modul Pelatihan CPDSA


49
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Python Loops

Terdapat satu function penting yang sering juga digunakan untuk for loop, yaitu range(), function
ini meng-output barisan angka yang berurutan.

for i in range(5):
print("Kode penting, i =", i)

Modul Pelatihan CPDSA


50
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Python Loops
Sedangkan while loop, hanya memerlukan suatu pernyataan boolean, perhatikan kode
berikut:
i = 9
while i < 10:
print(i, end=' ')
i += 1 # menambah nilai i sebesar 1

kita bisa lihat bahwa ketika i = 9, loop ini masih jalan karena i masih memenuhi kondisi yang ada, tetapi i
ketika
= 10, while loop berhenti karena pernyataan boolean ‘i < 10’ bernilai False.
Modul Pelatihan CPDSA
51
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Defining Functions

Kita dapat mendefinisikan function sendiri menggunakan def, berikut


contohnya:
def even_or_odd(number):
if number % 2 == 0:
return 'even'

else: return 'odd'

syntax ini membuat function even_or_odddengan sebuah argumen number sebagai


bernama Pendefinisian function def, dan input.
: setelah tutup kurung, semua kode yang di-
diawali dengan
setelahnya diikuti
adalah kode yang dijalankan saat function ini indent
dipanggil. return merupakan keyword
untuk meng-output hasil dari function tersebut (disini outputnya berupa string 'even' atau
'odd'). Modul Pelatihan CPDSA
52
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Defining Functions

Kita bisa mendefinisikan default argument saat mendefinisikan sebuah


function.

def greet(who="Colin"):
print("Hello,", who)

Bila function greet dipanggil tanpa argumen, maka function ini akan membaca "Colin"
sebagai argumen inputnya.
Defining Functions

Untuk memanggil suatu function, kita perlu melihat terlebih dahulu apakah function tersebut
memberikan
return atau tidak. Bila iya, seperti function even_or_odd, kita dapat meng-assign output dari function ini ke
suatu
variabel seperti
berikut.

Bila function tersebut tidak memberikan output, kita tidak perlu meng-assign ke suatu variabel
spesifik.

Modul Pelatihan CPDSA


54
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Defining Functions

Jika kita menulis help(even_or_odd)untuk function yang baru saja didefinisikan, kita tidak akan
memperoleh deskripsi singkat seperti function python builtin, sehingga kita harus menambahkan
sendiri menggunakan docstrings.

Modul Pelatihan CPDSA


55
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Help Functions

Function help() sangat membantu kita untuk mendapat informasi mengenai function
lainnya.

Terdapat dua hal yang ditampilkan oleh function help():

1. Header, yang memperlihatkan nama function & argumen input apa saja yang
diterima (round(number,ndigits)).
2. Deskripsi singkat mengenai apa yang dilakukan oleh function tersebut.

Modul Pelatihan CPDSA


56
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Help Functions

Docstrings merupakan string yang diawali dan diakhiri triple-petik yang ditulis langsung setelah
def.
def even_or_odd(number):
"""
Fungsi untuk menentukan apakah input
merupakan bilangan ganjil atau genap.
"""
if number % 2 == 0:
return 'even'

else: return 'odd'

Modul Pelatihan CPDSA


57
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Preparation with
Pandas
Overview

Pada bagian Pandas, akan dipelajari beberapa hal


berikut.

● Create, Read, Write


● Explore DataFrame
● Grouping, Indexing & Selecting
● Merging DataFrame
● Data Cleaning (Null Values, Drop Duplicates, etc)
● Data Encoding
● Correlation

Modul Pelatihan CPDSA


59
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create, Read,
Write
Pandas merupakan package python yang digunakan untuk menangani data, seperti analisis, cleaning,
dan manipulasi data. Pandas memanfaatkan objek bernama DataFrame sebagai pusatnya, DataFrame
ini berbentuk tabel dan memiliki banyak method untuk menganalisanya.

DataFrame dapat dibuat dengan menggunakan pd.DataFrame()dengan input berupa dictionary.

first_df = pd.DataFrame({'person':['orang a', 'orang b'], 'pay':[50,30]})

DataFrame memiliki indeks, secara default indeks ini merupakan integer, tetapi bisa diubah
ketika mendefinisikan DataFrame.

first_df = pd.DataFrame({'person':['orang a', 'orang b'], 'pay':[50,30]},


index = ['produk_1','produk_2'])
Modul Pelatihan CPDSA
60
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create, Read,
Write
Pandas Series atau Series merupakan kumpulan nilai yang memiliki index, bila DataFrame
diasosiasikan dengan tabel, maka Series merupakan List. Kita dapat membuat Series dari sebuah
list:

pd.Series([1, 2, 3, 4, 5])

Series juga dapat dilihat sebagai salah satu kolom di DataFrame, sehingga indeksnya dapat
kita definisikan secara manual.
pd.Series([1, 2, 3, 4, 5], index = ['Sales 1', 'Sales 2', 'Sales 3', 'Sales
4', 'Sales 5'])

Modul Pelatihan CPDSA


61
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create, Read,
Write
Kita juga dapat mengimport data yang sudah ada ke bentuk DataFrame, salah satu tipe data yang
populer adalah .csv. Untuk mengimport tipe data ini, kita menggunakan function
pd.read_csv(pathfile) dengan pathfile merupakan tempat dimana csv tersebut disimpan.

Modul Pelatihan CPDSA


62
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create, Read,
Write
Syntax pathfile yang digunakan sedikit berbeda dengan windows,

● Bila file python dan file csv berada di satu folder, kita cukup menuliskan nama file csv tersebut
saja di pathfile, contoh: pd.read_csv('Iris.csv').
● Bila file csv tersebut berada di path lain, misalkan di path C:\Work\Iris.csv, maka kita
menginput path tersebut ke pandas sebagai pd.read_csv('C:/Work/Iris.csv').
(Ubah garis miring \ menjadi /).
● Kita juga dapat menginput pathfile berupa link http. pd.read_csv("url")
● Untuk tipe file lain, dapat digunakan method read lain pd.read_excel(),
seperti
pd.read_table(), dan
pd.read_sql_table().

Modul Pelatihan CPDSA


63
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create, Read,
Write
Khusus untuk Google Colab, kita perlu
mengupload terlebih dahulu file data
yang dibutuhkan ke session ataupun
drive kita.

Untuk mengupload file, klik logo folder


pada sisi kiri dari Google Colab.

Modul Pelatihan CPDSA


64
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create, Read,
Write
Kemudian tekan tombol upload dan
pilih file data yang ingin di upload.

Modul Pelatihan CPDSA


65
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Explore DataFrame

● Kita dapat mengecek ukuran DataFrame yang diinput menggunakan df.shape


● Kita juga dapat menggunakan function len() untuk melihat banyaknya row pada
dataframe.

Modul Pelatihan CPDSA


66
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Explore DataFrame

Kita dapat melihat n data pertama dan lima data terakhir menggunakan df.head(n) dan
df.tail(n), (bila n tidak dimasukkan, defaultnya adalah 5)

Modul Pelatihan CPDSA


67
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Explore DataFrame

Kita bisa mendapat kolom tertentu dari sebuah DataFrame dengan memanggil nama kolomnya
seperti pada dictionary, dan mengakses data index tertentu dengan menspesifikasikan indeksnya.

Modul Pelatihan CPDSA


68
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Explore DataFrame

Untuk melihat ada kolom apa saja di dataframe, dapat menggunakan


df.columns

Modul Pelatihan CPDSA


69
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Explore DataFrame

● Kita bisa mengecek tipe data suatu series menggunakan series.dtype, untuk mengecek
tipe dari semua kolom pada suatu dataframe, kita
data df.dtype .
menggunakan s

Modul Pelatihan CPDSA


70
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Explore DataFrame

Pandas menyediakan beberapa functions yang dapat membuat kita mengerti dataframe kita lebih baik lagi,
beberapa functions yang sering digunakan adalah:

● series.describe() , untuk memperoleh statistika deskriptif dari suatu kolom DataFrame (series).
Dapat digunakan untuk kolom berupa value ataupun kategorikal.
● series.mean() , function untuk mendapat mean dari series tersebut.

Modul Pelatihan CPDSA


71
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Explore DataFrame

● series.unique(), untuk memperoleh nilai unik apa saja yang ada dalam kolom
tersebut, biasanya untuk series berisi string/kategorikal.
● series.nunique(), meng-output ada berapa nilai unik pada series
● tersebut.mirip dengan series.unique(), tetapi dihitung juga berapa
series.value_counts(),
nilai unik tersebut muncul dikali
series
tsb.

Modul Pelatihan CPDSA


72
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Explore DataFrame

● df.count(), digunakan untuk menghitung banyaknya value di setiap kolomnya, null values
tidak akan terhitung.

Modul Pelatihan CPDSA


73
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Groupin
g
Terkadang kita perlu untuk grouping beberapa
data berdasarkan suatu kolom/kelompok. Kita
dapat menggunakan syntax:

df.groupby(by ='column').agg()

dengan agg() merupakan aggregate yang


dipilih
(sum, count, maps, etc). Pada foto ini,
kita menspesifikan salah satu kolom
saja.

Kita juga bisa memasukkan beberapa kolom


ke groupby menggunakan list.
Modul Pelatihan CPDSA
74
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Indexing & Selecting

Indexing operator pada pandas memiliki syntax yang mirip dengan indexing list pada python,
operator
pandas untuk indexing loc dan
adalah iloc.
● Untuk mengakses row tertentu berdasarkan index, kita menggunakan method df.iloc[n]
dengan n sebagai urutan baris yang ingin dicari.
● Kebalikan dari indeks python standar, bila dua index dijadikan argumen di iloc, index
pertama menunjukkan kolom, dan indeks kedua menunjukkan baris. Maka untuk mengakses
kolom ketiga dari df menggunakan iloc, kita akan memakai df.iloc[:, 3]. Bila hanya row
kedua sampai
ketiga yang ingin diambil, maka syntaxnya df.iloc[1:3, :].
● adalah
Kita juga bisa memasukkan list untuk mengambil indeks row spesifik, misal kita ingin
mengambil indeks 1,9, dan 192, maka kita bisa menggunakan iloc sebagai
df.iloc[[1,9,192], :]
Modul Pelatihan CPDSA
75
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Indexing & Selecting

Ada cara lain untuk mengakses elemen pada DataFrame, yaitu


menggunakan method loc, method ini menggunakan label/nama
kolom sebagai selection, dan nama indeks sebagai barisnya.

Kita juga dapat melakukan slicing loc seperti pada


menggunakan iloc.

Modul Pelatihan CPDSA


76
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Indexing & Selecting

Kita dapat memanipulasi indeks pada


DataFrame dengan menggunakan method
set_index().
Method ini mengubah kolom yang kita
jadikan argumen sebagai indeks.

Modul Pelatihan CPDSA


77
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Indexing & Selecting

Selain menggunakan loc dan iloc, kita dapat


melakukan slicing dataframe secara
kondisional juga, perhatikan pernyataan
kondisional berikut.

Output dari kondisional ini merupakan list


berupa False atau True. Statement kondisional
ini dapat digunakan untuk slicing df yang
“Species” nya adalah “Iris-Virginica”.

Modul Pelatihan CPDSA


78
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Indexing & Selecting

df[(df['SepalLengthCm'] > 6) &


(df['Species'] == 'Iris-virginica')]

Modul Pelatihan CPDSA


79
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Indexing & Selecting

Kita juga dapat menggabungkan beberapa conditional statement menggunakan & sebagai and
operator
dan | sebagai ,
or.
Kita juga dapat menggunakan method .isin()untuk list.

df[df['Species'].isin(['Iris-versicolor','Iris-virginica'])]

Modul Pelatihan CPDSA


80
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Indexing & Selecting

Terdapat method lain yang dapat kita


gunakan untuk memfilter, yaitu
df.where(), dengan syntax

df.where(condition)

dengan condition merupakan suatu


comparison statement.

Dapat dilihat bahwa data yang memiliki nilai


condition berupa False akan menjadi nilai
null.
Modul Pelatihan CPDSA
81
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Merging

Ada beberapa cara untuk menggabungkan dua atau lebih DataFrame, yaitu dengan
menggunakan
join(), merge(), dan concat(). Karena apa yang bisa dilakukan merge() dapat dilakukan
oleh
join() dengan lebih mudah, kita hanya akan membahas join() danconcat() oleh
saja.
join() digunakan untuk menggabungkan dua buah dataframe berdasarkan suatu key, dapat
berupa kolom yang sama, ataupun indeks yang sama.

Sedangkan concat() hanya menambahkan/menumpuk dua buah dataframe, tanpa peduli


bagaimana hubungan antara kedua dataframe tersebut.

Modul Pelatihan CPDSA


82
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Merging

Modul Pelatihan CPDSA


83
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Merging

Modul Pelatihan CPDSA


84
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Merging

Cara termudah untuk menggabungkan dua DataFrame adalah dengan concat(), method ini
berguna bila dua dataframe yang akan digabung memiliki jumlah & nama kolom yang sama.
Syntaxnya adalah

pd.concat([dataframe_1,dataframe_2],axis = 0)

Hasil dari merging ini adalah sebuah DataFrame yang sama dengan dataframe_1
diappend dataframe_2 .

Bila kita ubah axis = 1, maka concat() ini akan menambahkan kolom-kolom
dataframe_2 ke dataframe_1.

Modul Pelatihan CPDSA


85
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Merging

dataframe_1 = pd.DataFrame([['a', 1], ['b', 2]],columns=['letter', 'number'])


dataframe_1

dataframe_2 = pd.DataFrame([['c', 3], ['d', 4]],columns=['letter', 'number'])


dataframe_2

Modul Pelatihan CPDSA


86
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Merging
pd.concat([dataframe_1,dataframe_2],axis =0)

pd.concat([dataframe_1,dataframe_2],axis =1)

Modul Pelatihan CPDSA


87
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Merging

Cara lain untuk merge dua buah DataFrame adalah join(), tipe merge ini adalah dengan
menggabungkan dua buah DataFrame berdasarkan index. Biasanya kita melakukan set_index
terlebih dahulu bila kita ingin menggabungkan dua buah DataFrame berdasarkan kolom tertentu,
syntax nya adalah

dataframe_1.join(dataframe_2, how = 'left', lsuffix = '_1', rsuffix =


'_2')

dimana parameter how adalah cara join yang diinginkan (left, right, inner, outer), sedangkan lsuffix
dan rsuffix merupakan tambahan nama kolom bila dataframe_1 dan dataframe_2 memiliki
nama kolom-kolom yang sama.

Modul Pelatihan CPDSA


88
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Merging

Tipe join yang digunakan akan berpengaruh pada hasil merging,

● Outer, merupakan tipe join yang menggabungkan seluruh kolom dari dataframe_1
dan dataframe_2 menjadi satu buah dataframe.
● Inner, dataframe yang baru hanya terdiri dari irisan kolom yang sama dari dataframe_1
dan dataframe_2.
● Left, menggabungkan seluruh kolom-kolom pada dataframe_1 dengan kolom-kolom
dataframe_2 yang beririsan (memiliki nama kolom yang sama dengan dataframe_1).
● Right, menggabungkan seluruh kolom-kolom pada dataframe_2 dengan kolom-
kolom
dataframe_1 yang beririsan (memiliki nama kolom yang sama dengan dataframe_2).

Modul Pelatihan CPDSA


89
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Merging

Modul Pelatihan CPDSA


90
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Joining: Inner
Join Customer ID Customer Name Customer Age

1 Name 1 30

Tabel 2 Name 2 35
1
Customer ID Customer Name Customer Age Total Amount Discount
3 Name 3 40

1 Name 1 30 $3000 10%

Inner Join
2 Name 2 35 $1200 15%

Customer ID Total Amount Discount

Tabel Hasil
1 $3000 10%
Join
Tabel
2
4 $400 1%

2 $1200 15%

Modul Pelatihan CPDSA


91
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Joining: Left
Join Customer ID Customer Name Customer Age

1 Name 1 30

Tabel 2 Name 2 35
1 Customer ID Customer Name Customer Age Total Amount Discount

3 Name 3 40
1 Name 1 30 $3000 10%

Left Join 2 Name 2 35 $1200 15%

3 Name 3 40 Null Null


Customer ID Total Amount Discount

1 $3000 10% Tabel Hasil


Tabel Join
2
4 $400 1%

2 $1200 15%

Modul Pelatihan CPDSA


92
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Joining: Right
Join Customer ID Customer Name Customer Age

1 Name 1 30

Tabel 2 Name 2 35
1 Customer ID Customer Name Customer Age Total Amount Discount
3 Name 3 40

1 Name 1 30 $3000 10%

Right Join 2 Name 2 35 $1200 15%

4 Null Null $400 1%


Customer ID Total Amount Discount

1 $3000 10%

Tabel Tabel Hasil


2
4 $400 1% Join
2 $1200 15%

Modul Pelatihan CPDSA


93
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Joining: Outer
Join Customer ID Customer Name Customer Age

1 Name 1 30

Tabel 2 Name 2 35 Customer ID Customer Name Customer Age Total Amount Discount
1
3 Name 3 40 1 Name 1 30 $3000 10%

2 Name 2 35 $1200 15%


Outer Join
3 Name 3 40 Null Null

Customer ID Total Amount Discount


4 Null Null $400 1%

1 $3000 10%

Tabel
Tabel Hasil
2
4 $400 1%

Join
2 $1200 15%

Modul Pelatihan CPDSA


94
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Merging
dataframe_1 = pd.DataFrame({'key' :
['K0','K1',' K2','K3','K4','K5'] , "A"
: ['A0','A1','A2','A3','A4','A5']})
dataframe_1

dataframe_2 = pd.DataFrame({'key' :
['K0','K1','K2'] , "B" :
dataframe_1 dataframe_2
['B0','B1','B2']})
dataframe_2

dataframe_1 =
dataframe_1.set_index( 'key '
)
dataframe_2 = Hasil
dataframe_2.set_index( 'key ' join
)
dataframe_1.join(dataframe_2, how =
'left ',lsuffix= '_1',rsuffix=
'_2' Modul Pelatihan CPDSA
95
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Cleaning - Data Type
Conversion
Pertama-tama, kita perlu menyesuaikan tipe data dan dikonversi asalkan perubahan tipe datanya
masuk akal (contoh: integer to float), method yang digunakan adalah
series.astype(datatypes) dengan datatypes merupakan tipe data yang disupport oleh
pandas ( int, float, str, etc).

Modul Pelatihan CPDSA


96
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Cleaning - Null
Values
Null Values merupakan ketiadaan nilai pada suatu entry dataframe. Null values dapat menyebabkan
error dalam kode ataupun kesalahan perhitungan, simbol dari null values di python adalah NaN, kita
dapat mengecek keberadaan null values dengan df.isnull().sum(), ataupun df.info().

Modul Pelatihan CPDSA


97
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Cleaning - Null
Values
Untuk mengisi nilai kosong tersebut dengan placeholder, kita dapat menggunakan
syntax
series.fillna('Unknown')

Disini string ‘Unknown’ merupakan placeholder untuk mengisi null values. Kita juga dapat langsung membuang row
yang memiliki null values menggunakan df.dropna() . Kita akan mengisi null values pada SepalLengthCm
menggunakan nilai meannya.

df['SepalLengthCm'] = df['SepalLengthCm'].fillna(df['SepalLengthCm'].mean())

Modul Pelatihan CPDSA


98
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Cleaning - Drop
Duplicates
Kita Menggunakan df.drop_duplicates()untuk menghilangkan row data yang berupa
duplikat.

Modul Pelatihan CPDSA


99
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Cleaning -
Deleting
Kita dapat membuang row spesifik ataupun kolom spesifik dari dataframe menggunakan
df.drop().

● Untuk membuang row spesifik, kita dapat menggunakan syntax df.drop(nama_label,


axis
= 0). Nama label yang digunakan mirip dengan loc, sehingga kita dapat memasukkan list
juga.

Modul Pelatihan CPDSA


100
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Cleaning -
Sorting
Kita dapat melakukan
sorting menggunakan
method
df.sort_values() ,

misal kita ingin melakukan sort


descending data berdasarkan lebar
sepal pada data kita, maka
syntaxnya adalah sebagai berikut.

df.sort_values(by="SepalWi
dthCm", ascending=True)

Dengan by diinput dengan kolom


yang kita inginkan, ascending
dan
menerima input
boolean.
Modul Pelatihan CPDSA
101
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Cleaning -
Sorting
● sort_values()juga dapat
digunakan terhadap beberapa kolom
sekaligus, dengan menginput list
berisi nama kolom ke parameter by
● Saat melakukan sorting values
indeks tidak akan tetap urut,
sehingga kita perlu sort ulang
indeks dengan menggunakan
df.reset_index().

Modul Pelatihan CPDSA


102
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Cleaning - Assigning
Column
Assign nilai pada DataFrame bekerja mirip dengan python dictionary, nilai yang di assign dapat
berupa satu nilai, list dengan panjang yang sama dengan panjang DataFrame, ataupun perngolahan
dari kolom yang sudah ada, misalnya akan dibuat kolom baru yakni PetalArea :

df["PetalArea"] = 0.5 * df["PetalWidthCm"] *


df["PetalLengthCm"]

Modul Pelatihan CPDSA


103
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Cleaning -
Renaming
Terkadang karena satu dan lain hal, kolom atau index pada DataFrame perlu diubah namanya.
Untuk mengubah nama kolom, syntaxnya adalah

df.rename(columns = {'old_name': 'new_name', 'old_name1': 'new_name1'})

dan untuk index, adalah

df.rename(index = {'old_name': 'new_name', 'old_name1': 'new_name1'})

Modul Pelatihan CPDSA


104
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Cleaning -
Renaming

Modul Pelatihan CPDSA


105
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Cleaning - Replace
Values
Selain menangani null values, mungkin kita juga ingin mengganti nilai yang sudah ada, ini dapat
dilakukan dengan series.replace()yang menerima argumen dictionary.

Modul Pelatihan CPDSA


106
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Cleaning - Replace
Values
Contohnya dalam rangka pengolahan data lebih lanjut, hanya akan diperhatikan sebuah spesies saja yakni spesies
iris “setosa”. Jadi akan dilakukan perubahan data pada kolom “spesies” menjadi dua macam saja yakni “setosa”
dan
“not-setosa”. Berikut langkah -langkahnya :

● Identifikasi semua jenis spesies yang ada pada data iris :


df["Species"].unique()
Output :

● Dari 3 jenis tersebut buat sebuah dictionary untuk


memetakan :
rename_species = {'Iris-setosa':'setosa', 'Iris-versicolor':'not-setosa',
'Iris-virginica':'not-setosa'}
Modul Pelatihan CPDSA
107
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Cleaning - Replace
Values
● Dengan menggunakan replace , ubah data di kolom “species” dengan dictionary yang telah
dibuat :
df["is_setosa"] = df["Species"].replace(rename_species)
df["is_setosa"].unique()

Output
:

Modul Pelatihan CPDSA


108
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Cleaning - Reassign
Column
Selain dengan menggunakan fungsi replace, mengubah isi dari data dapat dilakukan dengan
menimpa kolom yang ada dengan data yang baru. Hal ini biasa dilakukan untuk mengubah
nilai suatu kolom melalui fungsi tertentu.

Misalnya kolom “PetalArea” yang sudah ada ingin diubah nilainya menjadi kategorikal
dengan aturan
Small : Luas petal < 2
Medium : 2 <= Luas petal
Big <6
: Luas petal >= 6

Modul Pelatihan CPDSA


109
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Cleaning - Reassign
Column
Definisikan fungsi yang menggambarkan
aturan pengkategorian :
def kategori_luas(luas) :
if luas < 2 :
kategori = "small"
elif (luas < 6) & (luas >= 2):
kategori = "medium"
elif luas >= 6:
kategori = "large"
return kategori

Selanjutnya ubah data PetalArea dengan fungsi diatas


:
df["PetalArea"] = df["PetalArea"].apply(kategori_luas)
df

Modul Pelatihan CPDSA


110
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Other
Functions
Beberapa function lain yang akan berguna untuk
data cleaning adalah:

● pd.get_dummies(nama_kolom),
untuk mengubah kolom kategorikal
menjadi data numerik, perhatikan
gambar berikut.
● pd.to_datetime()digunakan untuk
mengubah input menjadi tipe data
Timestamp, Series juga dapat digunakan
sebagai input.

Modul Pelatihan CPDSA


111
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Encoding Categorical
Data
Terdapat beberapa kasus dimana data kategorikal harus diubah menjadi tipe data numerik atau
diubah dengan kode tertentu, hal tersebut dinamakan encoding.

Contohnya pada kasus pengolahan data dengan machine learning dimana tidak dapat
langsung memproses data kategorikal berupa kata kata dan harus di-encoding menjadi
data numerik.

Data kategorikal diolah menjadi data numeric dengan proses encoding. Terdapat dua metode
encoding yang dipakai yakni :
1. One Hot Encoding : setiap kategori akan menjadi kolom baru dimana data akan bernilai 1
jika termasuk kategori tersebut, dan bernilai 0 jika tidak.
2. Labelling Encoding : setiap kategori diberi label numerik dengan pemetaan tertentu.
Modul Pelatihan CPDSA
112
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
One Hot
Encoding
Metode yang paling sering digunakan karena cocok untuk hampir semua jenis kategorikal.

Menggunakan fungsi pandas.get_dummies(), dimana menciptakan variabel dummy untuk


setiap kategori, lalu digabungkan dengan data asli.

Misalkan Dataframe ‘Data’ akan diencoding menjadi

‘Data_New’. Syntax :

Dummies1 = pd.get_dummies(df['Kategorikal column1'])


Dummies2 = pd.get_dummies(df['Kategorikal column2'])
df.drop(['Kategorikal column1', 'Kategorikal column2'],axis=1,inplace=True )
df_new = pd.concat([df,Dummies1,Dummies2],axis=1)
Modul Pelatihan CPDSA
113
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
One Hot
Encoding
Kita dapat mengaplikasikan One
Hot Encoding ini ke kolom
'PetalArea'
Dummies =
pd.get_dummies(df['PetalArea'])
df_new=
pd.concat([df,Dummies],axis=1)
df_new.drop(['PetalArea'],axis=1
,inplace=True)
df_new

Modul Pelatihan CPDSA


114
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Correlation
Correlation merupakan istilah untuk melihat seberapa dekat korelasi antar kolom, biasanya outputnya juga akan kita
label encoding terlebih dahulu. Akan kita tambah kolom "SpeciesNum" yang mengubah Iris-Setosa menjadi 1, Iris-
Versicolor menjadi 2, dan Iris Virginica menjadi 3.

df = df.set_index('Id')
df['SpeciesNum']= df['Species'].replace({'Iris-setosa':1,"Iris-versicolor":2,"Iris-virgi
nica":3})
df['SpeciesNum'].value_counts()

Modul Pelatihan CPDSA


115
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Correlation

Kemudian kita menggunakan df.corr() untuk menghitung correlationnya, dan menyimpannya


ke
df_new_corr df_corr = df.corr()
.

Modul Pelatihan CPDSA


116
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Numpy
Overview

Pada bagian Numpy, akan dipelajari beberapa hal


berikut.

● Introduction to Numpy
● Create Numpy
● Indexing & Selection
● Numpy operation and function

Modul Pelatihan CPDSA


118
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Array, Vector And
Matrix
● Array adalah objek sekumpulan data (homogen) yang 0 1 2 3 4 5
terstruktur dalam kisi-kisi (grid). Dengan
indeks/koordinat untuk menandakan posisi suatu data
data data data data data data
tersebut.

● Pada python array berada dibawah package numpy


sehingga array hanya dapat berisikan data numerik (1,1) (1,2) (1,3)
● Array dapat disusun dalam banyak dimensi (n-
dimensi) 1 2 3
○ Array dengan 1 dimensi disebut
vektor atau
○ 4 0 1
Array dengan 2 dimensi disebut matriks
(2,1) (2,2) (2,3)
● Sebagai objek matematis array dapat dilakukan berbagai
operasi matematis baik dengan sesama jenis array
maupun berbeda.

Modul Pelatihan CPDSA


119
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Numpy
Package
Numpy atau Numerical Python merupakan package standar untuk pengolahan data numerik, dan
dipakai hampir di semua ranah science dan engineering.

Seringkali package ini di-import dengan syntax

import numpy as np

Objek utama dari numpy ialah arrays atau disebut ndarray atau objek array berdimensi-n yang
homogen.

Modul Pelatihan CPDSA


120
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Numpy Arrays : Vs Python
List
Numpy array terlihat mempunyai struktur yang mirip seperti python list, dimana data disimpan
dalam grid tertentu dan dipanggil menggunakan indeks.

Dibandingkan python list, numpy array mempunyai kelebihan yakni pada kecepatan pengolahan data
dan memory penyimpanannya. Dikarenakan numpy array hanya dapat diisi dengan data homogen
(bertipe sama) maka manipulasi data didalamnya akan lebih cepat dibandingkan python list dimana
isinya dapat bermacam tipe data.

Modul Pelatihan CPDSA


121
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create Numpy Arrays from Python
List
Numpy arrays dapat berkesinambungan dengan python list, sehingga dengan fungsi np.array(python
list) dapat langsung membuat numpy array sesuai dengan list

my_list = [1,2,3] my_matrix = [[1,2,3],[4,5,6]]


np.array(my_list) np.array(my_matrix)

Output : array([1, 2, Output : array([[1, 2, 3],


3]) [4, 5, 6],
[7, 8, 9]])

Dengan mengubah data menjadi numpy array akan lebih memudahkan untuk melakukan operasi
vector dan matrix.
Built-in Methods

Terdapat beberapa fungsi khusus yang menghasilkan array dengan pengaturan tertentu.
Diantaranya adalah :

1. Arrange
2. Zeros and Ones
3. Linspace
4. Eye
5. Random number arrays

Modul Pelatihan CPDSA


123
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Built-in Methods :
Arrange
Merupakan fungsi untuk menghasilkan vector (1D array) dengan nilai nilai yang berurut
dalam interval tertentu.

import numpy as np
np.arange(*start interval, *end interval+1, *selisih )

Contoh :
- np.arange(0,5): array([0,1,2,3,4])
- np arange (0,9,2):
array([0,2,4,6,8])

Modul Pelatihan CPDSA


124
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Built-in Methods : Zeros and
Ones
Merupakan fungsi untuk menghasilkan arrays (vector atau matriks) berukuran tertentu dengan
nilai nilainya 0 (zeros) ataupun 1 (ones).

Secara default, nilai yang dihasilkan akan bertipe float.

import numpy as np
np.zeros(*ukuran)

Vektor dapat dibuat dengan ukuran berupa angka langsung , sedangkan matriks dibuat dengan
ukuran berupa interval tutup [].

Contoh:
- np.zeros(3) : array([0., 0., 0.])
- np.ones([2,2]) : array([[1., 1.],
[1., 1.]])
Modul Pelatihan CPDSA
125
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Built-in Methods :
Linspace
Merupakan fungsi untuk menghasilkan vector (1D array) berisikan nilai nilai yang berurut
dalam interval tertentu dengan jumlah pembagian yang ditentukan (nilai nilai membentuk
barisan aritmatika dengan jumlah data tertentu)..

import numpy as np
np.linspace(*start interval, *end interval, *jumlah pembagian )

Contoh :
np.linspace(0,10,3) #Membuat vector berisikan 3 data berurut
dimulai
dari 0 dan diakhiri dengan 10.
Output : : array([0. , 5. , 10.])
Modul Pelatihan CPDSA
126
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Built-in Methods :
Eye
Merupakan fungsi untuk menghasilkan matriks identitas (bernilai
1 pada diagonal dan lainnya 0 ) dengan ukuran n x n tertentu.

import numpy as np
np.eye(*ukuran rank matriks )

Contoh :
- np.eye(3) : array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
Contoh Matriks
identitas

Modul Pelatihan CPDSA


127
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Random Arrays :
rand
Merupakan fungsi untuk membuat array berukuran tertentu yang berisikan nilai nilai random
dalam interval [0,1) yang berdistribusi uniform.

Dapat membuat array dengan ukuran berdimensi berapapun sesuai dengan banyaknya input
fungsi.
import numpy as np
np.random.rand(*ukuran dimensi1, *ukuran dimensi2, …)

Contoh :
- np.random.rand(2): array([0.71994647,
0.33598025])
- np.random.rand(2,3) : array([[0.60558345, 0.53720423,
0.93742809],
[0.39861411, 0.405891 , 0.70169637]])
Modul Pelatihan CPDSA
128
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Random Arrays : randn dan
randint
Randn merupakan variasi dari fungsi rand, dimana randn berisikan bilangan acak yang diambil dari
distribusi normal baku

Randint merupakan fungsi yang menghasilkan array berukuran tertentu berisikan bilangan bulat (integer)
dalam interval tertentu

import numpy as np
np.random.randn(*ukuran dimensi1, *ukuran dimensi2, …)
np.random.randint(*awal interval, *akhir interval, *ukuran array)
#ukuran berupa bilangan asli ataupun pasangan ukuran matriks

Contoh :
np.random.randint(1,100,10) : array([13, 64, 27, 63, 46, 68, 92, 10, 58, 24])

Modul Pelatihan CPDSA


129
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Arrays Attribute and
Methods
Attribute merupakan informasi yang dibawa suatu objek python. Sedangkan methods merupakan
fungsi yang dibawa suatu objek python.

Biasanya dapat dipanggil dengan menambahkan .attribute atau .method() pada suatu objek,
tak terkecuali array.

Atribut array yang sering digunakan yakni shape (ukuran array) dan dtype (tipe data

array). Contoh :
Array = np.array([[1,2,3],[4,5,6]])

Array.shape : (2,3)
Array.dtype :
dtype(‘int32’) Modul Pelatihan CPDSA
130
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Arrays Methods :
Reshape 1 2 3
Metode untuk mengubah ukuran sebuah array dimana ukuran lama
dan baru harus sesuai, yakni banyak elemennya masih sama. 4 5 6
Pengurutan elemen dimulai dari kiri atas menuju kanan bawah.

Contohnya array berukuran 3x4 terdapat 12 elemen, dapat diubah


menjadi array 2x6 namun tidak dapat diubah menjadi array 4x4 atau 1 2
3x3.
3 4
Contoh :
: array([[1,
A = np.array([[1,2,3],[4,5,6]])
A.reshape(3,2)
5 6
2],
[3, 4],
[5, Modul Pelatihan CPDSA
9/04/22 6]]) Copyright© 2022 Ganesha 131

Tujuh Sembilan
Arrays Methods :
Transpose
Metode yang digunakan untuk mentranspose matriks.

Hanya dapat dilakukan pada array matriks dengan dimensi lebih dari 1.

Supaya vektor berukuran n dapat ditranspose, maka hendaknya vektor didefinisikan sebagai
array matriks berukuran 1 x n

Contoh :
A = np.array([[1,2,3]]) atau sama saja seperti A =
A.transpose() np.array([1,2,3]).reshape(1,3)
:
array([[1],
[2],
[3]] Modul Pelatihan CPDSA
9/04/22 ) Copyright© 2022 Ganesha 132

Tujuh Sembilan
Arrays Methods : Others
Function
Fungsi lain yang berguna yakni menampilkan suatu nilai perhitungan tertentu
0 1 2
dari … … ..
array. Contoh perhitungan yakni maksimum, minimum, rata rata, dll.
Misalkan A = np.array([[1,2,3],[4,5,6]])
… … …
- Nilai maksimum A.max() :6
: A.min() :1 3 4 5
- Nilai minimum A.mean() :
: A.argmax() 3.5 Lokasi urutan ke 5
- Nilai rata rata A.argmin() :5 yakni pada
: :0 koordinat 2,3
Pada
- fungsi
Lokasiyang
nilai memberikan
maksimum nilai lokasi, lokasi yang diberikan merupakan lokasi
urutan (bukan
: koordinat). Dalam kasus matriks urutan berjalan dari kiri atas ke
kanan bawahnilai
- Lokasi dimulai dari 0.
minimum
: Modul Pelatihan CPDSA
133
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Indexing and Selection

● Indexing pada arrays mirip dengan python list.

● Pada arrays dapat dilakukan Broadcasting, yakni mengganti/memasukan sebuah nilai


pada beberapa elemen secara sekaligus. Hal tersebut tidak bisa dilakukan pada objek
list. Contoh :
Array[1:8] = 100 => Mengisi indeks 1 sampai 7 dengan angka
100
● Fancy Indexing, adalah cara memilih elemen pada array dengan indeks tertentu tanpa
memperdulikan urutan. Contohnya pada array berukuran 2x6, dapat dipilih kolom-kolom
tertentu misalkan kolom 2,5, dan 3.

Modul Pelatihan CPDSA


134
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Indexing and Selection

A = np.array([[1,2,3], Mendefinisikan array


[4,5,6]
,[7,8,9]])

A[1:3 , 0:2] = 0 Mengganti sekumpulan


elemen menjadi 0

A[: , [2,0]] Fancy indexing,


menampilkan kolom 2
dan kolom 0.
Modul Pelatihan CPDSA
135
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Numpy Operation :
Arithmetic
arr = np.array([0,1,2,3,4]) arr = np.array([0,1,2,3,4])

operasi hasil operasi hasil


arr + arr array( [0,2,4,6,8]) arr + 2 array( [2,3,4,5,6])

arr - arr array( [0,0,0,0,0]) arr * 2 array( [0,2,4,6,8])

arr * arr array([0,1,4,9,16]) arr ** 2 array([0,1,4,9,16])

arr / arr array([nan, 1., 1., 1., 1.]) 1/arr array([inf , 1, 0.5, 0.333, 0.25])

Modul Pelatihan CPDSA


136
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Numpy Operation : Universal Array
Functions
Numpy menghadirkan universal array Misalkan arr =np.array([0,1,2,3,4])
function sebagai penerapan atas beberapa
operasi dan fungsi matematis. Fungsi akar np.sqrt(arr)

Fungsi ini akan menerapkan operasi Fungsi np.exp(arr)


eksponensial
matematis/memetakan nilai pada setiap
elemen array dan menghasilkan array Fungsi np.sin(arr), np.cos(arr), dan lainnya
trigonometr
dengan ukuran yang sama. i
Fungsi logaritma np.log(arr)

Fungsi np.round(arr,*berapa angka


pembulatan dibelakang koma)
Modul Pelatihan CPDSA
137
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Numpy Operation : Matrix
Operations
● Numpy menghadirkan manipulasi/operasi matriks kebanyakan dalam sebuah fungsi tersendiri,
tidak dalam bentuk notasi (untuk membedakan dengan operasi aritmatik).

● Operasi matriks tentu menggunakan prinsip-prinsip operasi matriks.

● Selama prinsip matriks terpenuhi, dapat diterapkan fungsi secara berturut (kombinasi),
misalnya A_dot_(B_dot_C)

● Untuk operasi matriks lanjutan numpy menggunakan subpackage yakni numpy.linalg

● Berikut beberapa operasi matriks yang sering digunakan :

Modul Pelatihan CPDSA


138
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Numpy Operation : Matrix
Operations
Misalkan arr =np.array([1,2,3]), arr2 = np.array([4,5,6]) , arr_square = np.array([[2,3],[4,5]])

Inner Product np.inner(arr, arr2) Determinant np.linalg.det(arr_square)

Dot Product np.dot(arr, arr2) True Inverse (determinant tidak 0) np.linalg.inv(arr_square)

Transpose np.transpose(arr), arr.transpose(), Pseudo Inverse (determinant bisa np.linalg.pinv(arr_square)


arr.T 0)

Trace (jumlah np.trace(arr_square), Nilai dan vektor eigen np.linalg.eig(arr_square)


dari diagonal) arr_squre.trace()

Modul Pelatihan CPDSA


139
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Multiplication of
array
Dot Product

1D 1 2 3 dot 3 4 5 1*3 + 2*4 + 3*5 26

2D 1 2 3 4 1*3+ 2*4 1*5+2*6 12 17


dot
2 3 5 6 2*3+3*4 2*5+3*6 18 28

Modul Pelatihan CPDSA


140
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Multiplication of
array
Inner Product

1D 1 2 3 inner 3 4 5 1*3 + 2*4 + 3*5 26

2D 1 2 3 4 1*3+ 2*5 1*4+2*6 13 16


inner
2 3 5 6 2*3+3*5 2*4+4*6 21 32

Modul Pelatihan CPDSA


141
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Multiplication of
array
CrossProduct (perkalian vektor yang menghasilkan vektor tegak lurus
keduanya)
1D 1 2 0 cross 4 5 6 2*6-5*0 0*4-6*1 1*5-4*3 12 -6 -3

2D 1 2 5 6
cross -4 -4
3 4 7 8

Modul Pelatihan CPDSA


142
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Visualizing Data with
Plotly
Overview

Pada bagian Plotly, akan dipelajari beberapa hal


berikut.

● Plotly Express
○ Line Chart
○ Bar Chart
○ Histogram
○ Scatter and Bubble chart
○ Pie Chart
○ Box Plot
○ Heatmap Correlation
● Plotly Graph Object
○ Lollipop Chart
● Setting Layout
Modul Pelatihan CPDSA
144
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
What is
Plotly?
● Plotly adalah salah satu python library/package untuk memvisualisasikan data
dalam berbagai macam visualisasi yang interaktif.
● Terdapat dua sub-package yang sering digunakan dalam visualisasi dasar yakni :
○ Plotly.graph_objects, package yang digunakan untuk mendefinisikan plot maupun objek objek
yang berkaitan dengan visualisasi seperti figure dan layout.

○ Plotly.express, package turunan plotly.graph_objects dimana dapat membuat plot


secara lebih praktis

Modul Pelatihan CPDSA


145
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Plotly
Express
● Plotly express merupakan modul praktis untuk membuat visualisasi data dalam berbagai
macam chart, seperti line chart, bar chart,pie chart, scatter plot, box plot, violin plot, dan
area plot.
● Keluaran dari fungsi plotly express merupakan sebuah objek bingkai (figure) dengan grafik
plot didalamnya.
● Plotly express melakukan 3 langkah dalam membuat visualisasi graph object yakni Inisiasi
Figure, Membuat grafik pada figure, dan Setting Layout dalam satu fungsi.
● Secara umum syntax yang digunakan yakni
import plotly.express as px (import module)
fig = px.*chart_name(*dataframe, x=*x_column_name , y=*y_column_name)
(create figure and chart)
fig.show() (show figure)
Modul Pelatihan CPDSA
146
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Setting Layout

● Pada plotly express beberapa setting layout dapat dilakukan bersamaan dengan pendefinisian
chart dengan menambahkan argumen (yang sesuai).
● Sedangkan pada umumnya (express atau graph object) setting layout dapat dilakukan
dengan “misalkan fig adalah hasil plotly express atau inisiasi figure “
fig.update_layout(title='judul figure', legend_title_text = 'judul
legenda',
*setting lain), -> setting layout
fig.update_xaxes(title_text="Nama sumbu x", *setting lain) ->
setting sumbu x
fig.update_yaxes(title_text="Nama sumbu y" ,*setting lain) ->
setting sumbu y
● Secara kepraktisan cara pertama (plotly express) lebih singkat dan selesai dalam satu perintah. Namun
untuk pengaturan lebih lanjut seperti menambahkan warna, ukuran font dan lainnya lebih mudah
dilakukan dengan cara kedua Modul Pelatihan CPDSA
147
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Setting Layout : Example Setting Title dan Axis
Name
px.scatter(df,x="SepalLengthCm",y="SepalWidthCm",color="Species"
,size="SepalWidthCm",
title='Dimensi Sepal Iris',
labels={"SepalLengthCm":"Panjang Sepal",
"SepalWidthCm":"Lebar Sepal",
"Species":"Spesies Iris"})

ATA
U
fig = px.scatter(df,x="SepalLengthCm",y="SepalWidthCm",color="Species",size="SepalWidthCm")
fig.update_layout(title="Dimensi Sepal Iris",
legend_title_text = "Spesies Iris")
fig.update_xaxes(title_text="Panjang Sepal")
fig.update_yaxes(title_text="Lebar Sepal" )
fig.show()

Modul Pelatihan CPDSA


148
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Setting Layout : Example Setting Title dan Axis
Name

Modul Pelatihan CPDSA


149
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create Charts : Line
Chart
Line chart umumnya digunakan untuk memplot suatu metrik berdasarkan waktu, maka kita
akan mencoba membuat data dummy menggunakan numpy.

x_data = np.arange(30) +1 #buat array berisi 1 sampai 30

y_data = np.random.randint(10,20,30) #buat array dengan angka random antara 10


sampai 20, sebanyak 30 buah.

Modul Pelatihan CPDSA


150
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create Charts : Line
Chart
Syntax :

Import plotly.express as px
fig=px.line (*dataframe, x
=*x_columns, y= *y_columns)
fig.show()

Contoh :
import plotly.express as px
px.line(x=x_data,y=y_data,title='Penju
alan tanaman per hari.')

Modul Pelatihan CPDSA


151
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create Charts : Bar
Chart
Syntax :

Import plotly.express as px
fig=px.bar (*dataframe, x =*x_columns, y=
*y_columns)
fig.show()

Contoh :
import
fig=px.bar(df.groupby(['Species'],as_index=False).
plotly.expr
mean(),x='Species',y='PetalLengthCm',title='Rata-r
ess as px
ata Panjang Petal Spesies
Iris',labels={"PetalLengthCm":"AVG
PetalLengthCm"})

*saat y=None , sumbu y akan otomatis menjadi jumlah data pada


tiap kategorinya
Modul Pelatihan CPDSA
152
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create Charts : Bar
Chart
Untuk mengubah posisi bar dari vertikal ke horizontal, dapat
dilakukan dengan menambahkan input ‘orientation = ‘h’’ ,
sedangkan ‘orientation = ‘v’ ‘ menunjukan bar chart vertikal.
Namun perhatikan peletakan kolom pada input ‘x’ dan ‘y’
supaya chart bermakna, contoh :

import plotly.express as px
px.bar(df.groupby('Species',as_index=False)
.mean(),x='PetalLengthCm',y='Species',
title='Total Spesies Iris',orientation='h'
,labels={"PetalLengthCm":"AVG
PetalLengthCm"})

Modul Pelatihan CPDSA


153
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create Charts : Bar
Chart
Dalam beberapa kasus nilai barchart lebih baik ditampilkan dalam
persentase, pada bar chart dapat dilakukan dengan melakukan
grouping pada data yang dibutuhkan lalu dimanipulasi supaya
menjadi nilai persentase, lalu dengan input 'text_auto = True' nilai
akan ditampilkan diujung bar.

import plotly.express as px
persen =
df.groupby(['Species'],as_index=False)['SepalWidthCm'].c o
unt()
persen['SepalWidthCm'] =
persen['SepalWidthCm']*100/persen['SepalWidthCm'].sum()
Persen.column = ['Species','Percent']
px.bar(persen,y='Species',x='Percent',title='Persentase
Total Spesies Iris',orientation='h',text_auto=True)

Modul Pelatihan CPDSA


154
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Bar Chart : Categorical
Separate
Pemisahan kategorikal diinisiasi melalui input
color="kolom_kategorikal" , dengan tipe pemisahan
diatur dalam input barmode={'group','stack','overlay'}

contoh :

import plotly.express as px
fig =
px.bar(df.groupby(['PetalArea','is_setosa'],a (group)
s_index=False).count(),x="is_setosa",
y='Id',color="PetalArea",title='Luas
Petal Iris',orientation='v',barmode='group')
fig.update_yaxes(title='Jumlah')
fig.show() (stack) (overlay
Modul Pelatihan CPDSA
9/04/22
) 155
Copyright© 2022 Ganesha
Tujuh Sembilan
Create Charts : Histogram
Chart
Syntax :

Import plotly.express as px
fig=px.histogram (*dataframe, x =*x_columns)
fig.show()

Contoh :
import plotly.express as px
px.histogram(df,x='SepalWidthCm',title='Lebar
Sepal Iris',nbins=10)

Untuk mengatur jumlah bin yang dibuat dalam range


lebih sering dan terjadwal

Modul Pelatihan CPDSA


156
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create Charts : Histogram
Chart
Untuk menampilkan nilai histogram dalam persentase,
dapat langsung dilakukan dengan input
histnorm='percent.

Sedangkan untuk menampilkan nilai diatas tiap bins


nya menggunakan input text_auto=True.

Contoh :
import plotly.express as px
Sepal
px.histogram(df,x='SepalWidthCm',title='Lebar
Iris',histnorm='percent',text_auto=True)

Modul Pelatihan CPDSA


157
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create Charts : Histogram
Chart
Untuk menampilkan staceked histogram, kita juga
dapat memanfaatkan barmode 'overlay', dan
mengatur opacity menjadi lebih kecil.

Contoh :
import plotly.express as px
fig =
px.histogram(df,x='SepalWid
thCm',title='Lebar
Sepal Iris', color = 'is_setosa',opacity =
0.5,barmode = 'overlay')
fig.show()

Modul Pelatihan CPDSA


158
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create Charts : Histogram
Chart
Kita juga dapat memfilter terlebih dahulu
data yang ingin diplot, misal kita hanya ingin
melihat distribusi sepal length dari setosa.

Contoh :
import plotly.express as px

px.histogram(df[df['is_setosa'] ==
'setosa'],x='SepalLengthCm',title=
'Panjang Sepal Iris Setosa')

Modul Pelatihan CPDSA


159
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create Charts : Scatter and Bubble
Chart
Syntax :
import plotly.express as px
fig=px.scatter (*dataframe, x =*x_columns, y=
*y_columns)
fig2=px.scatter (*dataframe, x =*x_columns, y=
*y_columns, size=*size_measure)
fig.show()

fig2.show()

Contoh :plotly.express as px
import
fig=px.scatter(df,x="SepalLengthCm",y="SepalWidthCm")
fig2=px.scatter(df,x="SepalLengthCm",y="SepalWidthCm",
size="PetalLengthCm")
fig.show()
fig2.show()
Modul Pelatihan CPDSA
n 160
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembila
Create Charts : Pie
Chart
Syntax :

Import plotly.express as px
fig=px.pie(*dataframe, values=*numeric_column,
names=*text_display_column)
fig.show()

Contoh :

import plotly.express as px
df1 = df.groupby(by = 'Species')['Id'].count()
fig = px.pie(df1,values=df1.values,names=df1.index)
fig.show()

Modul Pelatihan CPDSA


161
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create Charts : Box
plot
Syntax :

Import plotly.express as px
fig=px.box(*dataframe, x =*x_columns, y=
*y_columns)
fig.show()

Contoh

import plotly.express as px
fig = px.box(df,x="Species",y="SepalLengthCm")
fig.show()

Modul Pelatihan CPDSA


162
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Correlation Heatmap
(data)
Data yang digunakan untuk membuat correlation heatmap dapat diperoleh menggunakan
function pandas, Proses untuk memperoleh df_corr ada pada bagian pandas.

Modul Pelatihan CPDSA


163
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Correlation Heatmap

Kita dapat menggunakan heatmap


untuk memperlihatkan korelasi
antar kolom/fitur.

fig = px.imshow(df_corr,
text_auto=True,width = 1000,
height = 600, aspect="auto")

fig.show()

Modul Pelatihan CPDSA


164
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Plotly Graph
Objects
● Merupakan package utama dalam plotly untuk melakukan visualisasi data, dengan objek
utamanya yakni Figure.

● Secara umum berikut langkah-langkah pembuatan visualisasi dalam graph object :

a. Inisiasi Figure (bingkai gambar)

b. Membuat grafik pada figure

c. Setting Layout (judul, sumbu, legenda, dll)

d. Menampilkan figure

Modul Pelatihan CPDSA


165
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Plotly Graph Objects :
Example
import plotly.graph_objects as go Import Package
fig = go.Figure() Inisiasi Figure
fig.add_trace(go.Scatter(x=df["SepalLengthCm Pembuatan grafik
"], y=df["SepalWidthCm"],mode='markers')) pada figure
fig.update_layout(title = "Sepal Of Iris") Pengaturan layout
fig.update_xaxes(title_text="Length")
fig.update_yaxes(title_text="Width")
fig.show() Menampilkan
figure

Modul Pelatihan CPDSA


166
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Plotly Graph Objects :
Example

Modul Pelatihan CPDSA


167
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create Charts : Lollipop
Charts
Plotly tidak memiliki function untuk lollipop charts secara langsung, tetapi kita dapat
mengakalinya menggunakan graph objects.

Pertama kita siapkan datanya terlebih dahulu, kita ingin melihat rata-rata sepal length untuk
setiap spesies.

df_loli = df.groupby(['Species'], as_index=False)


['SepalLengthCm'].mean()

Modul Pelatihan CPDSA


168
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create Charts : Lollipop
Charts
fig = go.Figure()
fig.add_trace(go.Bar(x = df_loli['Species'],y = df_loli['SepalLengthCm'],width
= 0.05))
fig.add_trace(go.Scatter(x = df_loli['Species'],y = df_loli['SepalLengthCm'],
mode='markers', marker = dict(size = 50)))
fig.update_layout(width = 800, showlegend = False ,title = 'Rata-Rata Panjang
Sepal')
fig.update_yaxes(title_text="Mean Sepal Length")
fig.show()

Modul Pelatihan CPDSA


169
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Create Charts : Lollipop
Charts

Modul Pelatihan CPDSA


9/04/22 Copyright© 2022 Ganesha Tujuh 170
Sembilan
Subplot

Menampilkan beberapa plot sejenis maupun berbeda dalam suatu figure menggunakan subplot,
untuk membuat figure dengan subplot digunakan fungsi plotly.subplots.make_subplots,
berikut contoh pembuatan figure dengan subplot berukuran 2x2.

from plotly.subplots import make_subplots


fig = make_subplots(row=2, col=2)

Akan terbentuk 4 lokasi untuk menempatkan chart


dengan susunan dan lokasi sedemikian

row = 1, col = 1

row = 1, col = 2
Modul Pelatihan CPDSA
9/04/22
row = 2, col Copyright©
=1 2022 Ganesha
171

Tujuh Sembilan
row = 2, col = 2
Subplot

Akan dicontohkan dengan menampilkan pie chart Petal Area Distribution, untuk Setosa dan Not-
Setosa
from plotly.subplots import make_subplots
import plotly.graph_objects as go
fig=make_subplots(rows=1,
cols=2,specs=[[{"type":"pie"},{"type":"pie"}]],subplot_titles=("Setosa","Not-Setosa"))
temp = df.groupby(['is_setosa','PetalArea'],as_index=False).count()
temp = temp[temp.is_setosa=='setosa']
fig.add_trace(go.Pie(labels=temp['PetalArea'],values=temp['Species']),row=1,col=1)
temp = df.groupby(['is_setosa','PetalArea'],as_index=False).count()
temp = temp[temp.is_setosa=='not-setosa']
fig.add_trace(go.Pie(labels=temp['PetalArea'],values=temp['Species']),row=1,col=2)
fig.update_layout(title='Petal Area Distribution')
fig.update_traces(textfont_size=20,textinfo='percent+label')

Modul Pelatihan CPDSA


172
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Subplot

Modul Pelatihan CPDSA


9/04/22 Copyright© 2022 Ganesha Tujuh 173
Sembilan
Machine Learning
with Scikit-Learn
Overview

Pada bagian sklearn (scikit learn), akan dipelajari beberapa hal


berikut.
● Machine Learning
● Data Preparation
● Machine Learning Regression (Linear Regression)
● Machine Learning Classification
○ Decision Tree and Random Forest
○ XGBoost
○ Logistic Regression
○ K-Nearest Neighbor
○ Support Machine Vector (SVM)
○ Evaluation
○ Grid Search
● Machine Learning Clustering
○ K-Means Clustering
○ HDBSCAN Modul Pelatihan CPDSA
175
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Machine Learning

Machine Learning adalah contoh kecerdasan buatan (AI) yang memberikan sistem kemampuan
untuk belajar dan berkembang secara otomatis dari pengalaman/data tanpa diprogram secara
eksplisit.

Machine learning dibedakan menjadi dua macam yakni : Supervised Learning dan Unsupervised

learning Supervised Learning yakni learning dilakukan dengan menggunakan data berlabel.

Unsupervised Learning yakni learning dilakukan dengan menggunakan data tidak berlabel.

Modul Pelatihan CPDSA


176
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Machine Learning
Algorithm Linear Regression

Decision Tree
Regression and Random
Forest
Supervised Support Vector
Machine
Classification Logistic Regression
Machine
K-Nearest Neighbor
Clustering
Learning
Unsupervised K-Means
Dimensionality
Reduction PCA

Modul Pelatihan CPDSA


177
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Preparation : Choose
Variable
Dalam Machine learning terdapat 2 macam variabel yakni variabel Dependent dan Independent.

Variabel dependent adalah variabel tujuan dalam machine learning, misalnya machine learning
bertujuan membedakan spesies bunga iris, maka variabel tujuannya yakni “species”. Seringkali
dilambangkan Y.

Variabel independen adalah variabel-variabel yang mempengaruhi variabel independen biasanya


dinyatakan dalam nama X.

Variabel dapat dipilih secara manual sesuai dengan tujuan, kebutuhan dan juga hasil analisis. Tidak pasti
bahwa semua kolom pada dataset digunakan sebagai variabel independent atau dependent.

Modul Pelatihan CPDSA


178
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Machine Learning
Regression

Modul Pelatihan CPDSA


179
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data For
Regression
Model regresi mempunyai nilai variabel dependent (y) berupa data numerik yang sifatnya kontinu.

Misalkan akan model regresi untuk memprediksi lebar petal dari bunga iris, jika diketahui panjang
sepal, lebar sepal, dan panjang petal.

y = df_encoding["PetalWidthCm"]
X = df_encoding.drop(["is_setosa","Species","PetalWidthCm"],axis=1)

from sklearn.model_selection import train_test_split


X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
random_state=101)

Modul Pelatihan CPDSA


180
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Linear
Regression
Import
module
from :
sklearn.linear_model import LinearRegression

Create model
:linear_model = LinearRegression()

Training/Fitting model : (menggunakan data


train)
linear_model.fit(X_train,y_train)

Model predict : (menggunakan data X_test untuk menghasilkan


y_predict)
y_predict = lm.predict(X_test)

Coefficient
model :
pd.DataFrame(linear_model.coef_,X.columns,columns=['Coefficient'])
Modul Pelatihan CPDSA
181
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Linear Regression :
Evaluation
- Evaluasi dilakukan dengan menghitung selisih antara y_predict dengan y_test, dimana semakin kecil
selisih semakin bagus model.
- Beberapa metric/perhitungan untuk mengevaluasi model regresi yakni Mean Absolute Error (MAE),
Mean Squared Error (MSE), Root Mean Squared Error (RMSE)

Syntax :
from sklearn import metrics
print('MAE:', metrics.mean_absolute_error(y_test, predictions))
print('MSE:', metrics.mean_squared_error(y_test, predictions))
print('RMSE:', np.sqrt(metrics.mean_squared_error(y_test, predictions)))

Contoh:

Modul Pelatihan CPDSA


182
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Machine Learning
Classification

Modul Pelatihan CPDSA


183
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Preparation : Load
Dataset
Pada bagian Machine learning ini akan digunakan dataset iris hasil pengolahan pada bagian
pandas “exercise : exploration iris dataset”, seperti berikut :

Dari data Iris disamping


dapat dilihat terdapat
5 kolom data sebagai
variabel penentu
spesies dari bunga iris,
dan 1 kolom yang
merupakan label data
yakni spesies dari
bunga iris
Modul Pelatihan CPDSA
184
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Preparation :
Encoding
Terdapat dua kolom data kategorikal pada dataset yang mana Machine learning sulit
untuk mengolahnya, terkhususnya adalah kolom kategorikal non-label (kolom
“petal_area”).

Akan dilakukan one-hot encoding terhadap kolom “petal_area” tersebut


dummies = pd.get_dummies(df["PetalArea" ],drop_first=True)
df.drop(" PetalArea
",axis=1,inplace=True)
df_encoding = pd.concat([df,dummies],axis=1)
df_encoding.head()

Modul Pelatihan CPDSA


185
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Preparation : Choose
Variable
Pada dataset Iris, kolom “species” merupakan variabel dependent, sedangkan sisanya dapat dimasukan ke
dalam variabel dependen. Berikut pemisahannya (jika semua variabel dipakai) :

y = df_encoding["is_setosa"]
X = df_encoding.drop(["Species","is_setosa"],axis=1)

Namun jika terdapat variabel yang tak dipakai sebagai variabel independen, misalnya kolom “PetalLengthCm”
dan “PetalWidthCm” tidak digunakan :

y = df_encoding["is_setosa"]
X =
df_encoding.drop(["is_setosa","Species","PetalLengthCm","PetalWidthCm"],axis=1)

Modul Pelatihan CPDSA


186
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data Preparation : Split
Data
Data yang tersedia akan dipisah (dengan proporsi tertentu) menjadi 2 jenis yakni
data train : data yang digunakan machine learning untuk belajar
data test : data yang digunakan untuk mengevaluasi kinerja setelah
belajar

Syntax :
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
random_state=101)

Keterangan :
X : variabel independen
y : variabel dependen (target)
Test size : proporsi data test dibanding total data
Random state : nilai keacakan supaya nilai nilai yang dihasilkan dari proses acak akan
sama
Modul Pelatihan CPDSA
187
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Logistic Regression

Import module :
from sklearn.linear_model import LogisticRegression

Create model :
logmodel = LogisticRegression(max_iter=100)

Training/Fitting model : (menggunakan data train)


logmodel.fit(X_train,y_train)

Model predict : (menggunakan data X_test untuk menghasilkan


y_predict)
y_predict = logmodel.predict(X_test)

Modul Pelatihan CPDSA


188
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Logistic Regression

● Secara default log regresi akan menggunakan threshold 0.5 untuk memisahkan kelas 0
dan kelas 1.
● Untuk mengubah threshold, syntax sedikit dimodifikasi pada proses prediksi :

Model predict : (menggunakan data X_test untuk menghasilkan y_predict)


threshold = 0.4
y_predict_raw = logmodel.predict_proba(X_test)
y_predict = [1 if result[1] > threshold else 0 for result in
y_predict_raw]

Modul Pelatihan CPDSA


189
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
K-Nearest Neighbor : Data
Prep
- K N N menggunakan jarak antar sampel sehingga berbagai fitur data perlu disamakan
skalanya (standar) supaya setiap fiturnya mempunyai pengaruh yang sama terhadap
jaraknya.
- Standarisasi data ini dilakukan sebelum dilakukannya data split.

Syntaxsklearn.preprocessing
from Standardize : import StandardScaler
scaler = StandardScaler()
scaler.fit(X)
X_standar = scaler.transform(X)
X_standar_test,X_standar_train,y_test,y_train = train_test_split(X_standar,
y, test_size=0.2, random_state=101)

Modul Pelatihan CPDSA


190
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
K-Nearest Neighbor

Import module :
from sklearn.neighbors import KNeighborsClassifier

Create model : (n_neighbor dapat dipilih)


KNN = KNeighborsClassifier(n_neighbors=4)

Training/Fitting model : (menggunakan data train)


KNN.fit(X_standar_train,y_train)

Model predict : (menggunakan data X_standar_test untuk menghasilkan


y_predict)
y_predict = KNN.predict(X_standar_test)

Modul Pelatihan CPDSA


191
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
K-Nearest Neighbor : Choose K
Value
- K merupakan parameter model yang tidak berubah selama proses learning atau disebut hyperparameter
- Nilai K yang terbaik diperoleh melalui observasi atau pengalaman.
- Berikut salah satu cara menentukan nilai K terbaik dengan menerapkan satu per satu lalu dilihat nilai
erornya

Syntax :
error_rate = [] import plotly.express as px
for i in range(1,30): import numpy as np
knn = KNeighborsClassifier(n_neighbors=i) fig =
knn.fit(X_standar_train,y_train) px.line(x=np.arange(1,30),y
markers=True,)
pred_i = knn.predict(X_standar_test) =error_rate,
error_rate.append(np.mean(pred_i !=
fig.update_layout(title='Error Rate vs. K Value')
y_test))
fig.update_xaxes(title='K')
fig.update_yaxes(title='Error Rate')
Modul Pelatihan CPDSA
192
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Support Machine Vector (Support Vector
Classification)
Import module :
from sklearn.svm import SVC

Create model :
model = SVC(C=1, gamma = ‘auto’)

Training/Fitting model : (menggunakan data train)


model.fit(X_train,y_train)

Model predict : (menggunakan data X_test untuk menghasilkan


y_predict)
y_predict = model.predict(X_test)

Modul Pelatihan CPDSA


193
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Decision Model Parameter
Tree - max_depth
- max_features
: kedalaman pohon
: jumlah fitur maksimal
- max_leaf_nodes : jumlah percabangan maksimal
Import - n_estimator : jumlah estimasi
module
from :
sklearn.tree import DecisionTreeClassifier

Create model
: tree = DecisionTreeClassifier(max_depth=None,max_features='auto',
d
max_leaf_nodes=None)

Training/Fitting model : (menggunakan data


train)
dtree.fit(X_train,y_train)

Model predict : (menggunakan data X_test untuk menghasilkan


y_predict)
y_predict = dtree.predict(X_test)

Modul Pelatihan CPDSA


194
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Random Forest
Model Parameter
- max_depth : kedalaman pohon
Import - max_features : jumlah fitur maksimal
module :
from sklearn.ensemble import RandomForestClassifier - max_leaf_nodes : jumlah percabangan maksimal
- n_estimator : jumlah estimasi
Create model
:rfc = RandomForestClassifier(n_estimators=100,max_depth=None,
max_features='auto', max_leaf_nodes=None)

Training/Fitting model : (menggunakan data


train)
rfc.fit(X_train, y_train)

Model predict : (menggunakan data X_test untuk menghasilkan


y_predict)
y_predict = rfc.predict(X_test)

Modul Pelatihan CPDSA


195
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
XGBoos
t
Import Model Parameter
module : - max_depth : kedalaman pohon
from sklearn.ensemble import GradientBoostingClassifier - n_estimator : jumlah estimasi
-learning rate : kecepatan learning
Create model
:xgmodel = GradientBoostingClassifier(n_estimators=100,
learning_rate=1.0,max_depth=1, random_state=0)

Training/Fitting model : (menggunakan data train)


xgmodel.fit(X_train,y_train)

Model predict : (menggunakan data X_test untuk menghasilkan


y_predict)
y_predict = xgmodel.predict(X_test)

Modul Pelatihan CPDSA


196
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Classification Model
Evaluation
- Pada machine learning klasifikasi seperti logistik regresi, decision tree, KNN, dan SVC
evaluasi model dilakukan dengan membuat classification report dan matriks konfusi. Yakni
dengan membandingkan y prediksi dengan y test apakah benar hasilnya klasifikasinya.

Syntax :
from sklearn.metrics import classification_report,confusion_matrix
print(classification_report(y_test,y_predict))
print(confusion_matrix(y_test,y_predict))

Modul Pelatihan CPDSA


197
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Classification Model
Evaluation
Classification
- Classification report dibuat dengan dasar
report :
matriks konfusi.
- Secara umum nilai presisi total ataupun recall
total dari classification report dijadikan alat
untuk mengevaluasi, juga nilai akurasi yang
didapat dari (TP + TN) / (TP+TN+FP+FN)
Matriks
Konfusi :

Modul Pelatihan CPDSA


198
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Hyperparameter Model

● Hyperparameter merupakan parameter model yang tidak mengalami perubahan akibat


proses learning atau belajar.

● Contohnya dapat dilihat saat mendefinisikan beberapa model sebelumnya misalnya C dan
gamma pada SVM/SVC model, n_neighbor dan n_cluster yang disebut K pada K N N dan K-
Means algorithm.

● Nilai Hyperparameter ditentukan secara manual atau dapat dicoba coba untuk
menghasilkan model dengan performa terbaik.

● Terdapat fungsi untuk melakukan pencarian hyperparameter model dinamakan


GridSearch.

Modul Pelatihan CPDSA


199
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Grid Search
● Idenya yakni dengan mencoba semua kemungkinan dari nilai (atau pasangan) hyperparameter yang
disajikan.

Inisiasi nilai hyperparameter


param_grid : 10, 100, 1000], 'gamma': [1,0.1,0.01,0.001,0.0001],
= {'C': [0.1,1,
'kernel': ['rbf']}

Inisiasi modul dan


Gridsearch :
from sklearn.model_selection import GridSearchCV
grid = GridSearchCV(SVC(),param_grid,refit=True,verbose=3)

Menjalankan model pada setiap


kemungkinan:
grid.fit(X_train,y_train)

Mendapatkan hyperparameter
terbaik :
grid.best_params_ Modul Pelatihan CPDSA
200
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Machine Learning
Clustering

Modul Pelatihan CPDSA


201
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Data for
Clustering
Model clustering (unsupervised) hanya mempunyai data variabel independen (X) yang akan
dibuat cluster.

Misalkan model clustering dibuat untuk mengelompokkan bunga iris hanya berdasarkan ukuran
Sepal, Petal, dan Luas Petalnya.

data = df_encoding.drop(["is_setosa","Species"],axis=1)

Modul Pelatihan CPDSA


202
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
K-Means Clustering

Import module :
from sklearn.cluster import KMeans

Create model :
(n_cluster atau disebut K dipilih sesuai berapa kluster yang akan dibuat, dan max terasi
menunjukan berapa banyak learning berjalan)
kmeans = KMeans(n_clusters=4,max_iter=300)

Training/Fitting model : (menggunakan data train)


kmeans.fit(data)

Modul Pelatihan CPDSA


203
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
HDBSCA
N
Import
Module: hdbscan
import

Create Model:
(min_cluster_size menentukan banyaknya minimal data yang diperlukan untuk membentuk
cluster)
clusterer = hdbscan.HDBSCAN(min_cluster_size = 5)

Training Model:
clusterer.fit(data)

Modul Pelatihan CPDSA


204
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan

Anda mungkin juga menyukai