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

Exploratory Data Analysis

Dokumen tersebut membahas tentang Analitika Data I yang merupakan mata kuliah semester ganjil tahun 2022/2023. Ringkasannya adalah dokumen tersebut membahas tentang Exploratory Data Analysis (EDA) yang merupakan 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.

Diunggah oleh

anastasiaveren105
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
52 tayangan

Exploratory Data Analysis

Dokumen tersebut membahas tentang Analitika Data I yang merupakan mata kuliah semester ganjil tahun 2022/2023. Ringkasannya adalah dokumen tersebut membahas tentang Exploratory Data Analysis (EDA) yang merupakan 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.

Diunggah oleh

anastasiaveren105
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 65

Analitika Data I

Semester Ganjil 2022/2023

Exploratory Data
Analysis
Syaiful Anam, S.Si, 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:http://www.numpy.org/

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: https://www.scipy.org/scipylib/

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: http://pandas.pydata.org/

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: http://scikit-learn.org/

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: https://matplotlib.org/

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: https://seaborn.pydata.org/

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
1.Bar Chart

Copy Right @Syaiful Anam Matematika UB


2. Pie Chart

Copy Right @Syaiful Anam Matematika UB


3.Histogram

Copy Right @Syaiful Anam Matematika UB


4.Scatter 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


9.Bubble 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("http://rcs.bu.edu/examples/pytho
n/data_analysis/Salaries.csv")

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('myfile.xlsx',sheet_name='Sheet1', index_col=None,
na_values=['NA'])
pd.read_stata('myfile.dta')
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


df.head()

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


df.dtypes

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.

df.attribute 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


kurung.Semua atribut dan metode dapat didaftar
dengan fungsi dir (): dir (df)

df.method() 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:


df.sex

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 = df.groupby(['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:


df.groupby('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:


df.groupby(['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)
df.iloc[0] # First row of a data frame
df.iloc[i] #(i+1)th row
df.iloc[-1] # Last row

df.iloc[:, 0] # First column


df.iloc[:, -1] # Last column

df.iloc[0:7] #First 7 rows


df.iloc[:, 0:2] #First 2 columns
df.iloc[1:3, 0:2] #Second through third rows and first 2
columns
df.iloc[[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("http://rcs.bu.edu/examples/python/data_analys
is/flights.csv")

In [ ]: # Select the rows that have at least one missing value


flights[flights.isnull().any(axis=1)].head()

Out[ ]:

Copy Right @Syaiful Anam Matematika UB


Missing Values

df.method() 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

df.method() 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

Anda mungkin juga menyukai