🏝️Praktikum 1
Pra Pengolahan Data - Ektraksi Fitur (Data Terstruktur)
Pra Pengolahan Data - Ekstraksi Fitur
Pada praktikum ini kita akan mencoba melakukan Pra pengolahan data dengan encoding, imputasi data terhadap data yang hilang (missing value) dan standarisasi. Setelah melakukan Pra pengolahan Data akan dilakukan ektraksi fitur. Dataset yang digunakan adalah dataset Titanic.
⬇️ Download ⬇️
Langkah 1 - Load Data
Import library yang dibutuhkan kemudian, load data kedalam DataFrame Pandas.
import pandas as pd
data = 'Training-Dataset.csv' # path dataset
df = pd.read_csv(data) # load dataset
jika menggunakan colab, kita harus upload datanya dulu ke colab, baru kemudian bisa diakses
from google.colab import files
uploaded = files.upload() # upload dataset
import pandas as pd
import io
df = pd.read_csv(io.BytesIO(uploaded['NamaFile.format'])) # load dataset
Tampilkan data teratas dengan perintah df.head()
df.head()
Maka akan muncul tampilan seperti dibawah ini

Langkah 2 - Pengecekan Data
Lakukan pengecekan informasi mengenai data dengan menggunakan df.info()
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
6 SibSp 891 non-null int64
7 Parch 891 non-null int64
8 Ticket 891 non-null object
9 Fare 891 non-null float64
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"
Langkah 3 - Imputasi
Pada langkah ini kita akan melakukan imputasi terdapat data yang hilang pada "Age", "Cabin", dan "Embarked".
Strategi yang akan kita gunakan adalah,
"Age" --> Dikarenakan "Age" adalah data nominal, maka kita akan menggunakan strategi mean.
"Cabin" --> "Cabin" merupakan informasi terkait dengan nomor kabin penumpang. Disini kita akan berasumsi bahwa, seluruh penumpang yang tidak memiliki nomor kabin, merupakan penumpang yang tinggal di dek-dek kapal. Sehingga kita akan mensubtitusi data yang hilang dengan informasi "DECK".
"Embarked" --> "Embarked" merupakan informasi lokasi embarkasi penumpang. Hanya ada 2 data yang hilang disini. Dikarenakan data merupakan data nominal, maka kita dapat menggunakan modus (mode) untuk mensubtitusi data yang hilang.
# Age - mean
df['Age'].fillna(value=df['Age'].mean(), inplace=True)
# Cabin - "DECK"
df['Cabin'].fillna(value="DECK", inplace=True)
# Embarked - modus
df['Embarked'].fillna(value=df['Embarked'].mode, inplace=True)
Langkah 4 - Validasi Hasil
Lakukan pengecekan kembali dengan df.info()
. Selanjutnya, kita juga dapat memastikan kembali apakah nilai yang disikan sudah benar dengan melakukan pencekan data secara langsung. Hasil dari proses imputasi adalah sebagai berikut,

Langkah 5 - Ekstraksi Fitur
Setelah melakukan Pre-Processing, langkah berikutnya kita akan melakukan Ekstraksi Fitur berdasarkan Jumlah keluarga "Familysize", Gelar Jumlah keluarga "Title", kelompok usia "AgeBin", Tempat tiket "CabinDeck"
import matplotlib.pyplot as plt
import seaborn as sns
# === EKSTRAKSI FITUR ===
# 1. FamilySize: jumlah keluarga di kapal (SibSp + Parch + diri sendiri)
df["FamilySize"] = df["SibSp"] + df["Parch"] + 1
# 2. Title: ambil gelar dari kolom Name (Mr, Mrs, Miss, Master, dll.)
df["Title"] = df["Name"].str.extract(r',\s*([^\.]+)\.', expand=False)
title_mapping = {
"Mlle": "Miss", "Ms": "Miss", "Mme": "Mrs",
"Lady": "Rare", "Countess": "Rare", "Capt": "Rare", "Col": "Rare",
"Don": "Rare", "Dr": "Rare", "Major": "Rare", "Rev": "Rare",
"Sir": "Rare", "Jonkheer": "Rare", "Dona": "Rare"
}
df["Title"] = df["Title"].replace(title_mapping)
# 3. AgeBin: kelompokkan usia menjadi kategori
df["AgeBin"] = pd.cut(df["Age"], bins=[0, 12, 18, 35, 60, 100],
labels=["Child", "Teen", "YoungAdult", "Adult", "Senior"])
# 4. CabinDeck: ambil huruf pertama dari kolom Cabin
df["CabinDeck"] = df["Cabin"].astype(str).str[0]
# 5. Fare per person: bagi harga tiket dengan jumlah keluarga
df["FarePerPerson"] = df["Fare"] / df["FamilySize"]
print("✅ Hasil Ekstraksi fitur ")
df[["Name", "Title", "Age", "AgeBin", "FamilySize", "Cabin", "CabinDeck", "FarePerPerson"]].head()
✅ Hasil Ekstraksi Fitur

Langkah 6 - Visualisasi Hasil Ektraksi Fitur
import seaborn as sns
import matplotlib.pyplot as plt
# === VISUALISASI FITUR HASIL EKSTRAKSI ===
plt.figure(figsize=(12, 6))
sns.barplot(x="FamilySize", y="Survived", data=df)
plt.title("Survival Rate berdasarkan Family Size")
plt.show()
plt.figure(figsize=(12, 6))
sns.barplot(x="Title", y="Survived", data=df,
order=df.groupby("Title")["Survived"].mean().sort_values().index)
plt.title("Survival Rate berdasarkan Title")
plt.xticks(rotation=45)
plt.show()
plt.figure(figsize=(12, 6))
sns.barplot(x="AgeBin", y="Survived", data=df,
order=["Child", "Teen", "YoungAdult", "Adult", "Senior"])
plt.title("Survival Rate berdasarkan Kelompok Usia (AgeBin)")
plt.show()
plt.figure(figsize=(12, 6))
sns.barplot(x="CabinDeck", y="Survived", data=df,
order=df.groupby("CabinDeck")["Survived"].mean().sort_values().index)
plt.title("Survival Rate berdasarkan Cabin Deck")
plt.show()
Hasil dari visualisasi Ektraksi Fitur seperti tampilan di bawah ini




Kode Lengkap
Last updated