๐งฌPraktikum 1
Exploratory Data Analysis (EDA)
Pengantar
Pada prarktikum ini kita akan belajar tentang dasar-dasar EDA. Dataset yang digunakan adalah dataset publik Titanic.
โฌ๏ธ Download โฌ๏ธ
Langkah 0 - Persiapan Lingkungan
(Opsional) Lakukan instalasi library pandas
, numpy
, dan matplotlib
. Pandas merupakan library untuk manipulasi data tabular. Numpy digunakan untuk manipulasi angka. Matplotlib digunakan untuk kebutuhan visualisasi data.
!pip install -q pandas matplotlib numpy
Import library tersebut pada cell notebook
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
Langkah 1 - Memuat Data
Jika Anda menggunakan Google Colab, lakukan proses unggah data pada instance Google Colab terlebih dahulu.
Lakukan pemuatan data dengan perintah,
df = pd.read_csv('Titanic-Dataset.csv')
Cek 5 data pertama dengan menggunakan perintah,
df.head()
Maka akan muncul tampilan dibawah ini,

Jika Anda membutuhkan preview lebih banyak data, Anda dapat memberikan parameter jumlah. Contoh, untuk menampilkan 100 data pertama, gunakan,
df.head(100)
Langkah 2 - Inspeksi Data
Pada tahap ini, kita lakukan pemahaman terhadap data berdasarkan nilai-nilai stastik dan kondisi data. Beberapa hal yang biasa dilakukan diantara adalah,
Pengecekan dimensi โ Untuk mengetahui jumlah baris dan kolom dari data. Pada data tabular, cara ini berguna untuk mendapatkan informasi jumlah data dan variabel.
Pengecekan tipe data โ Untuk mengetahui tipe data setiap variabel. Bermanfaat untuk proses pengolahan selanjutnya
Pengecekan nilai statistik deskriptif โ Untuk mengetahui ukuran kecenderuangan memusat atau menyebarnya suatu data.
Pengecekan Dimensi
df.shape
Anda akan mendapatkan hasil,
(891, 12)
Nilai ini menunjukkan bahwa data Titanic memiliki 891 baris dan 12 kolom.
Pengecekan Tipe Data
df.info()
Perhatikan hasil dari perintah yang telah dijalankan.
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 PassengerId 891 non-null int64
1 Survived 891 non-null int64
2 Pclass 891 non-null int64
3 Name 891 non-null object
4 Sex 891 non-null object
5 Age 714 non-null float64
6 SibSp 891 non-null int64
7 Parch 891 non-null int64
8 Ticket 891 non-null object
9 Fare 891 non-null float64
10 Cabin 204 non-null object
11 Embarked 889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB
Dari df.info()
kita dapat mengetahui jumlah data untuk setiap kolom. Selain itu, kita mengetahui bahwa,
"Age" berjenis float64
"Cabin" berjenis object
"Embarked" berjenis object
Pada Pandas, object sering kali mewaliki tipe data string. Kita harus cermat dalam hal ini. Hal ini berkaitan dengan teknik imputasi yang akan kita gunakan nantinya.
Selanjutnya, untuk lebih mengetahui jumlah data yang hilang untuk setiap kolom, gunakan perintah,
df.isnull().sum()
Didapatkan informasi seperti berikut,
PassengerId 0
Survived 0
Pclass 0
Name 0
Sex 0
Age 177
SibSp 0
Parch 0
Ticket 0
Fare 0
Cabin 687
Embarked 2
dtype: int64
Dari informasi ini, kita dapat mengetahui data yang hilang sejumlah,
177 data "Age"
687 data "Cabin"
2 data "Embarked"
Informasi ini akan kita gunakan pada praktikum selanjutnya.
Ringkasan Nilai Statistik
Untuk mendapatkan ringkasan nilai statistik, gunakan,
df.describe()
Anda akan mendapatkan informasi penting seperti,
Jumlah data
Nilai mean
Nilai simpangan baku (standard deviation)
Nilai min dan max
Nilai Q1 (25%), Q2 (50%), dan Q3 (75%).

Langkah 3 - Inspeksi Visual
Inspeksi visual dilakukan untuk mengetahui pola data secara visual. Dengan cara ini kita dapat menentukan langkah pra pengolahan data dengan lebih tepat. Inspeksi visual yang akan dilakukan adalah,
Inspeksi distribusi data melalui histogram
Inspeksi outlier melalui boxplot
Inspeksi korelasi antar variabel dengan heatmap dan scatterplot
Inspeksi Distribusi Data
Lakukan inspeksi distribusi data terhadap variabel Age
dan Fare
.
num_cols = ['Age','Fare']
for col in num_cols:
plt.figure()
plt.hist(df[col], bins=30)
plt.title(f'Distribusi {col}')
plt.xlabel(col); plt.ylabel('Frekuensi')
plt.show()
Anda akan mendapatkan histogram untuk Age
dan Fare
seperti berikut,


Secara sekilas, kita dapat menyimpulkan terjadi fenomena skew pada distribusi Age
dan Fare
.
Inspeksi Outlier
Inspeksi terhadap nilai-nilai outlier juga penting dalam proses EDA. Outlier dapat mengakibatkan pergeseran distribusi data yang dapat berdampak pada proses pelatihan model. Pada praktikum ini kita akan melakukan pengecekan outlier pada 1 variabel saja, yaitu Fare
.
Visualisasi yang paling mudah untuk digunakan dalam mendeteksi outlier adalah dengan menggunakan boxplot.
plt.figure()
plt.boxplot(df['Fare'].dropna(), vert=True)
plt.title('Boxplot Fare')
plt.ylabel('Fare')
plt.show()
Anda akan mendapatkan hasil seperti berikut,

Boxplot hanya dapat digunakan untuk data kuantitatif.
Inspeksi Komposisi Variabel Kualitatif
Dengan menggunakan boxplot, kita hanya mampu melakukan inspeksi pada variabel kuantitatif. Namun terkadang kita juga perlu melakukan inspeksi pada variabel kualitatif. Salah satu inspeksi yang dapat kita lakukan pada variabel kualitatif adalah mencari tahu jumlah data tiap kategorinya. Kita dapat menggunakan barchart dalam konteks ini.
Sebagai contoh, kita akan inspeksi variabel Survived
, Pclass
, Sex
, Embarked
.
cat_cols = ['Survived','Pclass','Sex','Embarked']
fig, axes = plt.subplots(2, 2, figsize=(10, 8))
axes = axes.flatten()
for i, col in enumerate(cat_cols):
df[col].value_counts(dropna=False).plot(kind='bar', ax=axes[i])
axes[i].set_title(f'Distribusi {col}')
axes[i].set_xlabel(col)
axes[i].set_ylabel('Jumlah')
plt.tight_layout()
plt.show()
Hasilnya,

Informasi yang kita dapatkan dari sini adalah, apakah jumla tiap kategorinya berimbang atau bahkan ada yang bernilai kosong (NaN).
Inspeksi Korelasi
Nilai korelasi digunakan untuk mengetahui apakah terdapat hubungan saling mempengaruhi antar variabel. Nilai ini cukup penting untuk melihat hubungan antara variabel independen dengan dependennya. Jika nilai korelasi tidak cukup, maka kita perlu melakukan tindakan lanjutan salah satunya dengan tidak menggunakan variabel independen tersebut dalam proses selanjutnya.
Dalam praktikum ini kita akan menggunakan 2 visualisasi untuk melakukan inspeksi korelasi, yaitu heatmap dan scatterplot.
Heatmap
Kita akan mennggunakan library Seaborn
pada visualisasi heatmap.
import seaborn as sns # Import seaborn for enhanced visualization
num_only = df.select_dtypes(include=[np.number])
corr = num_only.corr(numeric_only=True)
plt.figure(figsize=(8, 6)) # Increased figure size for better readability
sns.heatmap(corr, cmap='coolwarm', vmin=-1, vmax=1, annot=True, fmt=".2f") # Use seaborn.heatmap with annotation
plt.title('Heatmap Korelasi (numerik)')
plt.tight_layout()
plt.show()
Hasil dari analisis heatmap adalah sebagai berikut,

Secara ringkat kita juga dapat melakukan inspeksi korelasi dengan hasil data tabular. Sebagai contoh, variabel Survived
adalah variabel dependen yang akan menjadi fokus. Gunakan perintah,
corr['Survived'].sort_values(ascending=False)
Maka Anda akan mendapatkan informasi nilai korelasi variabel lain terhadap Survived
.

Scatter Plot
Scatter plot biasanya digunakan untuk mendapatkan informasi distribusi variabel dan juga dapat digunakan untuk mengetahui hubungan antar variabel. Hubungan ini dapat dijelaskan melalui pola-pola linier maupun non-linier.
Contoh, kita akan melakukan inspeksi pada variabel Age
dan Fare
.
plt.figure()
surv_map = {0:'No', 1:'Yes'}
plt.scatter(df['Age'], df['Fare'], alpha=0.7)
plt.xlabel('Age'); plt.ylabel('Fare')
plt.title('Scatter Age vs Fare')
plt.show()
Anda akan mendapatkan hasil,

Berdasarkan hasil scatterplot, Age
dan Fare
tidak menunjukkan hubungan korelasi yang cukup kuat. Hal ini nampak pada setiap rentang usia memiliki harga tiket yang tidak jauh bervariasi.
Last updated