Python For Data Analysis - UNIBI
Python For Data Analysis - UNIBI
● 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
● 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.
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.
1. Pergi ke situs
https://colab.research.google.co
m
2. Pilih “New Notebook”
3. Kita siap untuk membuat kode
baru.
ataupun
'Hello, World'
Dapat dilihat bahwa {} merupakan placeholder untuk variabel yang nantinya akan di
isi.
Tidak seperti C++ atau Java, kita tidak perlu mendeklarasikan terlebih dahulu variabel cloud dan
tipe variabelnya, python otomatis menangani itu semua.
● 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 harus diawali dengan alfabet, tidak dapat berawal dengan angka,
1a = 'ar'
akan menghasilkan syntax error.
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.
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)
maka kita dapat melakukan operasi tambah, kali, kurang, dll. seperti
berikut
print(a+b)
print(a-b)
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 Eksponen a pangkat b
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
a = 5
b = 2
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
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
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
Kita juga sering mendapat nilai boolean dari comparison operator, bukan assign langsung.
Contoh:
print(3 >= 2) akan menghasilkan output
True.
Operasi Deskripsi Operasi Deskripsi
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))
prima = [1,2,3,5,7]
list_kartu = [['Ani','Budi','Candra'],['J',
'K', '9'], ['As', '10', '2']]
Kita juga dapat mengakses elemen di akhir dari list dengan memakai indeks
negatif.
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.
● Append, kita dapat menambah nilai/elemen baru ke dalam list menggunakan method
list.append.
Dictionary merupakan salah satu struktur data di python yang mengaitkan kata kunci ke nilai\value
nya.
Disini kita mendefinisikan dictionary bernama price, untuk mengakses nilai didalamnya, kita
dapat memanggil menggunakan kata kuncinya.
● 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.
dict.items()digunakan untuk mengakses key dan value yang ada sebagai pasangan. Agar
lebih mudah digunakan, kita ubah price.items()disini menjadi list.
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')
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.
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.
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)
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
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.
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.
Function help() sangat membantu kita untuk mendapat informasi mengenai function
lainnya.
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.
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'
DataFrame memiliki indeks, secara default indeks ini merupakan integer, tetapi bisa diubah
ketika mendefinisikan DataFrame.
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'])
● 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().
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)
Kita bisa mendapat kolom tertentu dari sebuah DataFrame dengan memanggil nama kolomnya
seperti pada dictionary, dan mengakses data index tertentu dengan menspesifikasikan indeksnya.
● 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
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.
● 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.
● df.count(), digunakan untuk menghitung banyaknya value di setiap kolomnya, null values
tidak akan terhitung.
df.groupby(by ='column').agg()
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
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'])]
df.where(condition)
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.
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.
pd.concat([dataframe_1,dataframe_2],axis =1)
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
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.
● 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).
1 Name 1 30
Tabel 2 Name 2 35
1
Customer ID Customer Name Customer Age Total Amount Discount
3 Name 3 40
Inner Join
2 Name 2 35 $1200 15%
Tabel Hasil
1 $3000 10%
Join
Tabel
2
4 $400 1%
2 $1200 15%
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%
2 $1200 15%
1 Name 1 30
Tabel 2 Name 2 35
1 Customer ID Customer Name Customer Age Total Amount Discount
3 Name 3 40
1 $3000 10%
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%
1 $3000 10%
Tabel
Tabel Hasil
2
4 $400 1%
Join
2 $1200 15%
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).
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())
df.sort_values(by="SepalWi
dthCm", ascending=True)
Output
:
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
● 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.
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.
‘Data_New’. Syntax :
df = df.set_index('Id')
df['SpeciesNum']= df['Species'].replace({'Iris-setosa':1,"Iris-versicolor":2,"Iris-virgi
nica":3})
df['SpeciesNum'].value_counts()
● Introduction to Numpy
● Create Numpy
● Indexing & Selection
● Numpy operation and function
import numpy as np
Objek utama dari numpy ialah arrays atau disebut ndarray atau objek array berdimensi-n yang
homogen.
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.
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
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])
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
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])
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.
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
arr / arr array([nan, 1., 1., 1., 1.]) 1/arr array([inf , 1, 0.5, 0.333, 0.25])
● Selama prinsip matriks terpenuhi, dapat diterapkan fungsi secara berturut (kombinasi),
misalnya A_dot_(B_dot_C)
2D 1 2 5 6
cross -4 -4
3 4 7 8
● 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.
● 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()
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.')
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"})
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"})
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)
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)
Contoh :
import plotly.express as px
Sepal
px.histogram(df,x='SepalWidthCm',title='Lebar
Iris',histnorm='percent',text_auto=True)
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()
Contoh :
import plotly.express as px
px.histogram(df[df['is_setosa'] ==
'setosa'],x='SepalLengthCm',title=
'Panjang Sepal Iris Setosa')
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()
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()
fig = px.imshow(df_corr,
text_auto=True,width = 1000,
height = 600, aspect="auto")
fig.show()
d. Menampilkan figure
Pertama kita siapkan datanya terlebih dahulu, kita ingin melihat rata-rata sepal length untuk
setiap spesies.
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.
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')
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.
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
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 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.
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)
Create model
:linear_model = LinearRegression()
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:
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)
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)
● 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 :
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)
Import module :
from sklearn.neighbors import KNeighborsClassifier
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’)
Create model
: tree = DecisionTreeClassifier(max_depth=None,max_features='auto',
d
max_leaf_nodes=None)
Syntax :
from sklearn.metrics import classification_report,confusion_matrix
print(classification_report(y_test,y_predict))
print(confusion_matrix(y_test,y_predict))
● 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.
Mendapatkan hyperparameter
terbaik :
grid.best_params_ Modul Pelatihan CPDSA
200
9/04/22 Copyright© 2022 Ganesha
Tujuh Sembilan
Machine Learning
Clustering
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)
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)
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)