Analitika Data I
Semester Ganjil 2022/2023
Exploratory Data
Analysis
Syaiful Anam, [Link], MT, Ph.D
Program Studi Sarjana IlmuAktuaria
Jurusan Matematika
Universitas Brawijaya Copy Right @Syaiful Anam Matematika UB
Data
• Data mencakup kumpulan objek diskrit, angka, kata-kata,
peristiwa, fakta,pengukuran, pengamatan, atau bahkan
deskripsi sesuatu.
• Data tersebut dikumpulkan dan disimpan dari setiap
peristiwa atau proses yang terjadi dalam beberapa disiplin
ilmu, termasuk biologi,ekonomi, teknik, pemasaran, dan
lain-lain.
Copy Right @Syaiful Anam Matematika UB
Pemrosesan Data
• Pemrosesan data semacam itu menghasilkan informasi
yang bermanfaat dan pengolahan informasi tersebut
menghasilkan pengetahuan yang berguna.
• Bagaimana kita dapat menghasilkan informasi yang
bermakna dan berguna dari data tersebut?
Copy Right @Syaiful Anam Matematika UB
Exploratory Data Analysis (EDA)
• Analisis Data Eksplorasi mengacu pada proses
kritis dalam melakukan penyelidikan awal pada
data untuk menemukan pola, menemukan
anomali, menguji hipotesis, dan memeriksa asumsi
dengan bantuan ringkasan statistik dan
representasi grafis.
• EDA adalah praktik yang baik untuk memahami data
terlebih dahulu dan mencoba mengumpulkan sebanyak
mungkin pengetahuan dari data.
Copy Right @Syaiful Anam Matematika UB
Pentingnya EDA
❑ Mengidentifikasi variabel/fitur terpenting dalam kumpulan
data Anda.
❑ Menguji hipotesis atau memeriksa asumsi yang terkait
dengan kumpulan data.
❑ Untuk memeriksa kualitas data untuk pemrosesan dan
pembersihan lebih lanjut.
❑ Memberikan pengetahuan berbasis data kepada
pemangku kepentingan bisnis.
❑ Verifikasi hubungan yang diharapkan benar-benar ada
dalam data.
❑ Untuk menemukan struktur atau wawasan yang tidak
terduga dalam data.
Copy Right @Syaiful Anam Matematika UB
Data Science Process
Copy Right @Syaiful Anam Matematika UB
Dua Kategori Data
❑Tipe Data terstrucktur
Contoh: csv file, excel file, database file
❑Data Tidak terstruktur
Contoh: text,Images, videos, audio,
Copy Right @Syaiful Anam Matematika UB
Tipe Data
Copy Right @Syaiful Anam Matematika UB
Tipe Data Terstruktur
❑ Categorical - Ini adalah data apa pun yang bukan angka.
❑ Ordinal - memiliki satu set urutan mis. memberi peringkat
kebahagiaan pada skala 1-10.
❑ Biner - hanya memiliki dua nilai .mis. Laki laki atau
perempuan
❑ Nominal - tidak ada urutan pesanan mis. Negara
❑ Numerik – Data menginformasikan angka
❑ Kontinyu - angka yang tidak memiliki akhir yang logis,
misalnya ketinggian
❑ Diskrit - memiliki akhir yang logis, mis. hari dalam sebulan
Copy Right @Syaiful Anam Matematika UB
Python Libraries untuk Sains Data
Banyak pustaka Python yang populer:
• NumPy
• SciPy
• Pandas
• SciKit-Learn
Pustaka Visualisasi
• matplotlib
• Seaborn
dan masih banyak lagi
Copy Right @Syaiful Anam Matematika UB
Python Libraries untuk Sains Data
NumPy:
▪ memperkenalkan objek untuk array dan matriks
multidimensi, serta fungsi yang memungkinkan untuk dengan
mudah melakukan operasi matematika dan statistik tingkat
lanjut pada objek tersebut
▪ menyediakan vektorisasi operasi matematika pada array dan
matriks yang secara signifikan meningkatkan kinerja
▪ banyak perpustakaan python lainnya dibangun di NumPy
Link:[Link]
Copy Right @Syaiful Anam Matematika UB
Python Libraries untuk Sains Data
SciPy:
▪ kumpulan algoritme untuk aljabar linier, persamaan diferensial,
integrasi numerik, optimisasi, statistik, dan lainnya
▪ bagian dari SciPy Stack
▪ dibangun di NumPy
Link: [Link]
Copy Right @Syaiful Anam Matematika UB
Python Libraries for Data Science
Pandas:
▪ menambahkan struktur data dan alat yang dirancang untuk bekerja
dengan data seperti tabel (mirip dengan Series dan Data Frame di
R)
▪ menyediakan alat untuk manipulasi data: membentuk kembali,
menggabungkan, menyortir, mengiris, agregasi, dll.
▪ memungkinkan penanganan data yang hilang
Link: [Link]
Copy Right @Syaiful Anam Matematika UB
Python Libraries for Data Science
SciKit-Learn:
▪ menyediakan algoritma pembelajaran mesin: klasifikasi, regresi,
pengelompokan, validasi model, dll.
▪ dibangun di atas NumPy, SciPy, dan matplotlib
Link: [Link]
Copy Right @Syaiful Anam Matematika UB
Python Libraries untuk Sains Data
matplotlib:
▪ python 2D plotting library yang menghasilkan angka kualitas
publikasi dalam berbagai format hardcopy
▪ satu set fungsi yang mirip dengan MATLAB
▪ plot garis, plot sebar, diagram batang, histogram, diagram
lingkaran, dll.
▪ tingkat yang relatif rendah; beberapa upaya diperlukan untuk
membuat visualisasi tingkat lanjut
Link: [Link]
Copy Right @Syaiful Anam Matematika UB
Python Libraries untuk Sains Data
Seaborn:
▪ berdasarkan matplotlib
▪ menyediakan antarmuka tingkat tinggi untuk menggambar grafik
statistik yang menarik
▪ Mirip (dalam style) dengan perpustakaan ggplot2 populer di R
Link: [Link]
Copy Right @Syaiful Anam Matematika UB
Paket Python untuk EDA
Mulai notebook Jupyter
Pilih Start Menu
Jupyter notebook
Copy Right @Syaiful Anam Matematika UB
Memuat Pustaka Python
In [ ]: #Import Python Libraries
import numpy as np
import scipy as sp
import pandas as pd
import matplotlib as mpl
import seaborn as sns
Tekan Shift+Enter untuk mengeksekusi sel jupyter
Copy Right @Syaiful Anam Matematika UB
Visualisasi ilmiah untuk python
[Link] Chart
Copy Right @Syaiful Anam Matematika UB
2. Pie Chart
Copy Right @Syaiful Anam Matematika UB
[Link]
Copy Right @Syaiful Anam Matematika UB
[Link] Plot
Copy Right @Syaiful Anam Matematika UB
5. Heatmap
Copy Right @Syaiful Anam Matematika UB
6. Box Plot
Copy Right @Syaiful Anam Matematika UB
7. Line Plot
Copy Right @Syaiful Anam Matematika UB
8. Violin Plot
Copy Right @Syaiful Anam Matematika UB
[Link] Plot
Copy Right @Syaiful Anam Matematika UB
10. 3D Scatter Plot
Copy Right @Syaiful Anam Matematika UB
Grafik untuk menjelajahi data
Paket Seaborn dibangun di atas matplotlib tetapi
menyediakan antarmuka tingkat tinggi untuk
menggambar grafik statistik yang menarik, mirip
dengan pustaka ggplot2 di R. Ini secara khusus
menargetkan visualisasi data statistik
Copy Right @Syaiful Anam Matematika UB
Graphics 35
description
distplot histogram
barplot estimate of central tendency for a numeric variable
violinplot similar to boxplot, also shows the probability density of
the data
jointplot Scatterplot
regplot Regression plot
pairplot Pairplot
boxplot boxplot
swarmplot categorical scatterplot
factorplot General categorical plot
Copy Right @Syaiful Anam Matematika UB
Membaca data menggunakan pandas
In [ ]:
#Read csv file
df =
pd.read_csv("[Link]
n/data_analysis/[Link]")
Catatan: Perintah di atas memiliki banyak argumen
opsional untuk menyempurnakan proses impor data.
Ada sejumlah perintah panda untuk membaca format data
lain:
pd.read_excel('[Link]',sheet_name='Sheet1', index_col=None,
na_values=['NA'])
pd.read_stata('[Link]')
pd.read_sas('myfile.sas7bdat')
pd.read_hdf('myfile.h5','df')
Copy Right @Syaiful Anam Matematika UB
Menjelajahi data frames
In [3]: #List first 5 records
[Link]()
Out[3]:
Copy Right @Syaiful Anam Matematika UB
Latihan
❑ Cobalah untuk membaca 10, 20, 50 record pertama;
❑ Bisakah Anda menebak cara melihat beberapa catatan terakhir;
Petunjuk:
Copy Right @Syaiful Anam Matematika UB
Data Frame data types
Tipe Python
Tipe Pandas Asli Deskripsi
object string Dtype yang paling umum Akan
ditetapkan ke kolom Anda jika kolom
memiliki tipe campuran (angka dan
string).
int64 int Karakter numerik 64 mengacu pada
memori yang dialokasikan untuk
menampung karakter ini.
float64 float Karakter numerik dengan desimal.
Jika kolom berisi angka dan NaN (lihat
di bawah), panda akan default ke
float64, jika nilai Anda yang hilang
memiliki desimal.
datetime64, N/A (tetapi Nilai dimaksudkan untuk menyimpan
timedelta[ns] lihat modul data waktu. Lihat ini untuk
datetime di eksperimen deret waktu.
pustaka standar
Python)
Copy Right @Syaiful Anam Matematika UB
Tipe data Data Frame
In [4]: #Check a particular column type
df['salary'].dtype
Out[4]: dtype('int64')
In [5]: #Check types for all the columns
[Link]
Out[4]: rank object
discipline object
phd int64
service int64
sex object
salary int64
dtype: object
Copy Right @Syaiful Anam Matematika UB
Attribute dari Data Frames
Objek Python memiliki atribut dan metode.
[Link] Deskripsi
dtypes list tipe kolom
columns list nama kolom
axes list dari row labels dan column names
ndim Jumlah dimensi
size Jumlah elemen
shape mengembalikan tuple yang mewakili
dimensi
values numpy representasi data
Latihan
❑ Temukan berapa banyak record yang dimiliki data frame ini;
❑ Ada berapa elemen?
❑ Apa nama kolomnya?
❑ Jenis kolom apa yang kita miliki dalam bingkai data ini?
Copy Right @Syaiful Anam Matematika UB
Metode pada Data Frames
Tidak seperti atribut, metode python memiliki tanda
[Link] atribut dan metode dapat didaftar
dengan fungsi dir (): dir (df)
[Link]() Deskripsi
head( [n] ), tail( [n] first/last n rows
)
describe() generate descriptive statistics (for numeric
columns only)
max(), min() return max/min values for all numeric columns
mean(), median() return mean/median values for all numeric
columns
std() standard deviation
sample([n]) returns a random sample of the data frame
dropna() drop all the records with missing values
Latihan
❑ Berikan ringkasan untuk kolom numerik dalam kumpulan
data
❑ Hitung simpangan baku untuk semua kolom numerik;
❑ Berapa nilai rata-rata dari 50 catatan pertama dalam
kumpulan data? Petunjuk: gunakan metode head () untuk
mensubset 50 catatan pertama dan kemudian hitung rata-
rata
Copy Right @Syaiful Anam Matematika UB
Memilih kolom dalam Data Frame
Metode 1: Subset bingkai data menggunakan nama kolom:
df['sex']
Metode 2: Gunakan nama kolom sebagai atribut:
[Link]
Note: ada peringkat atribut untuk bingkai data panda, jadi untuk memilih kolom
dengan nama “rank" kita harus menggunakan metode 1.
Copy Right @Syaiful Anam Matematika UB
Latihan
1. Hitung statistik dasar untuk kolom salary;
2. Temukan berapa nilai di kolom salary(gunakan metode hitung);
3. Hitung salary rata-rata;
Copy Right @Syaiful Anam Matematika UB
Data Frames Metode groupby
Dengan mengguakan metode "group by", kita dapat:
• Pisahkan data menjadi beberapa kelompok berdasarkan beberapa
kriteria
• Hitung statistik (atau terapkan fungsi) ke setiap grup
In [ ]:#Group
data using rank
df_rank = [Link](['rank'])
In [ ]:#Calculate
mean value for each numeric column per each group
df_rank.mean()
Copy Right @Syaiful Anam Matematika UB
Data Frames Metode groupby
Setelah objek groupby dibuat, kita dapat menghitung berbagai statistik
untuk setiap grup:
In [ ]: #Calculate mean salary for each professor rank:
[Link]('rank')[['salary']].mean()
Catatan: Jika tanda kurung tunggal digunakan untuk menentukan kolom
(misalnya gaji), maka outputnya adalah objek Series Pandas. Ketika tanda kurung
ganda digunakan, outputnya adalah Data Frame
Copy Right @Syaiful Anam Matematika UB
Data Frames Metode groupby
catatan kinerja groupby:
• tidak ada pengelompokan/pemisahan yang terjadi hingga diperlukan.
Membuat objek groupby hanya memverifikasi bahwa Anda telah
melewati pemetaan yang valid
• secara default, kunci grup diurutkan selama operasi grupberdasarkan.
Anda mungkin ingin melewatkan sort = False untuk kemungkinan
percepatan:
In [ ]: #Calculate mean salary for each professor rank:
[Link](['rank'], sort=False)[['salary']].mean()
Copy Right @Syaiful Anam Matematika UB
Data Frame: filtering
Pengindeksan ini biasa dikenal sebagai filter, misalnya jika kita ingin men-
subset baris-baris yang nilai gajinya lebih besar dari $120K:
In [ ]: #Calculate mean salary for each professor rank:
df_sub = df[ df['salary'] > 120000 ]
Setiap operator Boolean dapat digunakan untuk mensubset data:
• lebih besar;
• > = lebih besar atau sama;
• <kurang;
• <= kurang atau sama;
• == sama;
• ! = tidak sama;
In [ ]: #Select only those rows that contain female
professors:
df_f = df[ df['sex'] == 'Female' ]
Copy Right @Syaiful Anam Matematika UB
Data Frames: Slicing
Ada beberapa cara untuk mensubset Frame Data:
• satu atau lebih kolom
• satu atau lebih baris
• himpunan bagian dari baris dan kolom
Baris dan kolom dapat dipilih berdasarkan posisi atau labelnya
Copy Right @Syaiful Anam Matematika UB
Data Frames: Slicing
Saat memilih satu kolom, dimungkinkan untuk menggunakan satu set
tanda kurung, tetapi objek yang dihasilkan akan menjadi Series (bukan
DataFrame):
In [ ]:#Select
column salary:
df['salary']
Ketika kita perlu memilih lebih dari satu kolom dan / atau membuat
output menjadi DataFrame, kita harus menggunakan tanda kurung ganda:
In [ ]:#Select
column salary:
df[['rank','salary']]
Copy Right @Syaiful Anam Matematika UB
Data Frames: Memilih baris
Jika kita perlu memilih rentang baris, kita dapat menentukan rentang
menggunakan ":"
In [ ]: #Select rows by their position:
df[10:20]
Perhatikan bahwa baris pertama memiliki posisi 0, dan nilai terakhir
dalam rentang dihilangkan:Jadi untuk rentang 0:10 10 baris pertama
dikembalikan dengan posisi dimulai dengan 0 dan diakhiri dengan 9
Copy Right @Syaiful Anam Matematika UB
Data Frames: method loc
Jika kita perlu memilih rentang baris, menggunakan labelnya, kita dapat
menggunakan metode loc:
In [ ]: #Select rows by their labels:
df_sub.loc[10:20,['rank','sex','salary']]
Out[ ]:
Copy Right @Syaiful Anam Matematika UB
Data Frames: method iloc
Jika kita perlu memilih rentang baris dan / atau kolom, dengan
menggunakan posisinya, kita dapat menggunakan metode iloc:
In [ ]: #Select rows by their labels:
df_sub.iloc[10:20,[0, 3, 4, 5]]
Out[ ]:
Copy Right @Syaiful Anam Matematika UB
Data Frames: method iloc (Ringkasan)
[Link][0] # First row of a data frame
[Link][i] #(i+1)th row
[Link][-1] # Last row
[Link][:, 0] # First column
[Link][:, -1] # Last column
[Link][0:7] #First 7 rows
[Link][:, 0:2] #First 2 columns
[Link][1:3, 0:2] #Second through third rows and first 2
columns
[Link][[0,5], [1,3]] #1st and 6th rows and 2nd and 4th columns
Copy Right @Syaiful Anam Matematika UB
Data Frames: Sorting
Kita dapat mengurutkan data berdasarkan nilai di kolom. Secara default
pengurutan akan terjadi dalam urutan menaik dan bingkai data baru
dikembalikan.
In [ ]: # Create a new data frame from the original sorted by the column Salary
df_sorted = df.sort_values( by ='service')
df_sorted.head()
Out[ ]:
Copy Right @Syaiful Anam Matematika UB
Data Frames: Sorting
Kita dapat mengurutkan data menggunakan 2 kolom atau lebih:
In [ ]: df_sorted = df.sort_values( by =['service', 'salary'], ascending = [True,
False])
df_sorted.head(10)
Out[ ]:
Copy Right @Syaiful Anam Matematika UB
Missing Values
Nilai yang hilang ditandai sebagai NaN
In [ ]: # Read a dataset with missing values
flights =
pd.read_csv("[Link]
is/[Link]")
In [ ]: # Select the rows that have at least one missing value
flights[[Link]().any(axis=1)].head()
Out[ ]:
Copy Right @Syaiful Anam Matematika UB
Missing Values
[Link]() Deskripsi
dropna() Drop missing observations
dropna(how='all') Drop observations where all cells is NA
dropna(axis=1, how='all') Drop column if all the values are missing
dropna(thresh = 5) Drop rows that contain less than 5 non-missing
values
fillna(0) Replace missing values with zeros
isnull() returns True if the value is missing
notnull() Returns True for non-missing values
Copy Right @Syaiful Anam Matematika UB
Missing Values
• Saat menjumlahkan data, nilai yang hilang akan diperlakukan sebagai nol
• Jika semua nilai hilang, jumlahnya akan sama dengan NaN
• metode cumsum () dan cumprod () mengabaikan nilai yang hilang tetapi
mempertahankannya dalam array yang dihasilkan
• Nilai yang hilang dalam metode GroupBy dikecualikan (seperti di R)
• Banyak metode statistik deskriptif memiliki opsi skipna untuk mengontrol
apakah data yang hilang harus dikecualikan.
• Nilai ini disetel ke True secara default (tidak seperti R)
Copy Right @Syaiful Anam Matematika UB
Fungsi Agregasi di Pandas
Agregasi --menghitung ringkasan statistik tentang setiap grup, mis
.menghitung jumlah atau cara kelompokmenghitung ukuran / jumlah
grup
Fungsi agregasi umum:
min, max
count, sum, prod
mean, median, mode, mad
std, var
Copy Right @Syaiful Anam Matematika UB
Fungsi Agregasi di Pandas
metode agg() berguna ketika banyak statistik dihitung per kolom:
In [ ]: flights[['dep_delay','arr_delay']].agg(['mi
n','mean','max'])
Out[ ]:
Copy Right @Syaiful Anam Matematika UB
Statistik Deskriptif Dasar
[Link]() Deskripsi
describe Basic statistics (count, mean, std, min,
quantiles, max)
min, max Minimum and maximum values
mean, median, Arithmetic average, median and mode
mode
var, std Variance and standard deviation
sem Standard error of mean
skew Sample skewness
kurt kurtosis
Copy Right @Syaiful Anam Matematika UB