Anda di halaman 1dari 26

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


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


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


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