‹ Daftar slide
Pertemuan 4: Operasi tools Data Analytics dasar
Operasi tools Data Analytics dasar
Big Data Analysis | Pertemuan 4 | Program Studi Bisnis Digital
CPMK 1 & 2 & 3
150 Menit
Python · R · Hands-on
Agenda Pertemuan
Teori (60 menit)
- Ekosistem Python & R untuk Analytics
- Library utama: pandas, NumPy, tidyverse
- Konsep data cleaning & preprocessing
- Strategi penanganan missing values
- Deteksi dan penanganan outliers
Praktik & Diskusi (90 menit)
- Demo: load & eksplorasi dataset nyata
- Latihan: cleaning dataset transaksi e-commerce
- Studi kasus: data operasional Gojek/BCA
- Diskusi kelompok & Q&A
- Preview tugas minggu depan
Tujuan Pembelajaran
01
- Menjelaskan perbedaan Python dan R serta kapan menggunakan masing-masing dalam proyek Analytics
02
- Mengoperasikan library pandas dan tidyverse untuk membaca, mengeksplorasi, dan memanipulasi dataset
03
- Menerapkan teknik handling missing values dan outliers pada data bisnis nyata secara sistematis
Sub-CPMK: Mahasiswa mampu mengoperasikan tools dasar Data Analytics untuk mengolah dan menganalisis data bisnis secara efektif.
Topik 1
Tools Python dan R untuk Data Analytics
Python vs R: Perbandingan Ekosistem
| Dimensi | Python | R |
|---|---|---|
| Orientasi utama | General-purpose + ML/AI | Statistik & riset akademik |
| Library analitik | pandas, NumPy, scikit-learn | tidyverse, ggplot2, caret |
| Kurva belajar | Lebih mudah bagi pemula | Lebih curam, tapi konsisten |
| Visualisasi | matplotlib, seaborn, plotly | ggplot2 (kuat untuk publikasi) |
| Penggunaan industri | Gojek, Tokopedia, Traveloka | Riset, perbankan, BPS |
| Deployment model | Sangat mudah (Flask/FastAPI) | Terbatas (Shiny/Plumber) |
Library Utama dan Fungsinya
Python Ecosystem
pandas — manipulasi DataFrame: filter, groupby, merge, pivot
NumPy — operasi array numerik, matriks, komputasi vektor
Jupyter Notebook — environment interaktif untuk eksplorasi & dokumentasi
R Ecosystem
dplyr — manipulasi data: select, filter, mutate, summarise
tidyr — reshape data: pivot_wider, pivot_longer, unnest
readr / readxl — import data dari CSV, Excel, database
Setup Environment dan Workflow Dasar
Instalasi Python (Anaconda)
# Buat environment baru
conda create -n bigdata python=3.11
conda activate bigdata
# Install library utama
pip install pandas numpy jupyter
pip install matplotlib seaborn
conda create -n bigdata python=3.11
conda activate bigdata
# Install library utama
pip install pandas numpy jupyter
pip install matplotlib seaborn
Workflow Analitik Standar
- Import library yang dibutuhkan
- Load dataset (CSV/Excel/DB)
- Eksplorasi awal: shape, dtypes, head()
- Identifikasi masalah data
- Cleaning & preprocessing
- Analisis & visualisasi
Topik 2
Proses Data Cleaning dan Preprocessing
Mengapa Data Perlu Dibersihkan?
Sumber Masalah Data Umum
- Input manual: typo, format tidak konsisten
- Integrasi sistem: encoding berbeda, delimiter tidak seragam
- Sensor/IoT: noise, dropout, packet loss
- Legacy system: field kosong, kode usang
- Human error: duplikasi entri, satuan berbeda
Dampak Data Kotor di Bisnis
- Rekomendasi produk tidak akurat (e-commerce)
- Scoring kredit keliru (perbankan)
- Prediksi demand salah (supply chain)
- Laporan manajemen menyesatkan
Prinsip: Data quality = Decision quality
Tahapan Data Preprocessing
| Tahap | Aktivitas | Fungsi pandas/R | |
|---|---|---|---|
| 1. Inspeksi | Cek shape, tipe data, distribusi | df.info(), df.describe() | |
| 2. Duplikasi | Temukan dan hapus baris duplikat | df.duplicated(), df.drop_duplicates() | |
| 3. Tipe data | Konversi ke tipe yang benar | df.astype(), pd.to_datetime() | |
| 4. Standardisasi | Format teks konsisten, strip whitespace | str.strip(), str.lower() | |
| 5. Validasi | Cek range nilai, constraint bisnis | df[df | |
| 6. Transformasi | Normalisasi, encoding kategori | MinMaxScaler, get_dummies() |
Teknik Standardisasi Data
Standarisasi Format Teks
# Python: bersihkan kolom nama
dfnama = dfnama .str.strip()
dfnama = dfnama .str.title()
dfkota = dfkota .str.lower()
# R: tidyverse
df %>% mutate(
nama = str_trim(str_to_title(nama)),
kota = str_to_lower(kota)
)
df
df
df
# R: tidyverse
df %>% mutate(
nama = str_trim(str_to_title(nama)),
kota = str_to_lower(kota)
)
Konversi Tipe Data
# Konversi tanggal
dftanggal = pd.to_datetime(
dftanggal , format='%d/%m/%Y'
)
# Konversi harga (hapus 'Rp' dan koma)
dfharga = dfharga
.str.replace('Rp','').str.replace(',','')
.astype(float)
df
df
)
# Konversi harga (hapus 'Rp' dan koma)
df
.str.replace('Rp','').str.replace(',','')
.astype(float)
Topik 3
Handling Missing Values & Outliers
Strategi Penanganan Missing Values
Identifikasi Missing Values
# Hitung missing per kolom
df.isnull().sum()
# Persentase missing
(df.isnull().sum() / len(df) * 100).round(2)
df.isnull().sum()
# Persentase missing
(df.isnull().sum() / len(df) * 100).round(2)
Aturan praktis:
<5% missing → bisa impute atau drop
5–30% missing → impute dengan hati-hati
>30% missing → pertimbangkan hapus kolom
<5% missing → bisa impute atau drop
5–30% missing → impute dengan hati-hati
>30% missing → pertimbangkan hapus kolom
Teknik Imputasi
| Teknik | Kapan dipakai |
|---|---|
| Mean imputation | Data numerik, distribusi normal |
| Median imputation | Data numerik, ada outlier |
| Mode imputation | Data kategorikal |
| Forward fill | Time series, nilai cenderung stabil |
| KNN imputation | Pola kompleks, data cukup besar |
Implementasi Imputasi di Python
Imputasi Sederhana
import pandas as pd
from sklearn.impute import SimpleImputer
# Median untuk kolom numerik
dfpendapatan .fillna(
dfpendapatan .median(), inplace=True
)
# Mode untuk kolom kategori
dfkota .fillna(
dfkota .mode()[0], inplace=True
)
# Forward fill untuk time series
dfharga_saham .fillna(method='ffill')
from sklearn.impute import SimpleImputer
# Median untuk kolom numerik
df
df
)
# Mode untuk kolom kategori
df
df
)
# Forward fill untuk time series
df
Imputasi Berbasis Model (KNN)
from sklearn.impute import KNNImputer
import numpy as np
# KNN imputer (k=5 neighbor)
imputer = KNNImputer(n_neighbors=5)
df_numeric = df.select_dtypes(
include=[np.number]
)
df_imputed = pd.DataFrame(
imputer.fit_transform(df_numeric),
columns=df_numeric.columns
)
import numpy as np
# KNN imputer (k=5 neighbor)
imputer = KNNImputer(n_neighbors=5)
df_numeric = df.select_dtypes(
include=[np.number]
)
df_imputed = pd.DataFrame(
imputer.fit_transform(df_numeric),
columns=df_numeric.columns
)
Coba Sendiri: Bandingkan Hasil Mean vs Median Imputation
Masukkan deretan angka bermasalah lalu bandingkan hasil imputasi mean dan median saat ada outlier.
Deteksi dan Penanganan Outliers
Metode Deteksi Outlier
IQR Method (non-parametrik):
Outlier = nilai di bawah Q1 - 1.5×IQR
atau di atas Q3 + 1.5×IQR
Outlier = nilai di bawah Q1 - 1.5×IQR
atau di atas Q3 + 1.5×IQR
Z-Score (parametrik):
Outlier = |z-score| > 3
(lebih dari 3 standar deviasi dari mean)
Outlier = |z-score| > 3
(lebih dari 3 standar deviasi dari mean)
Implementasi IQR di Python
Q1 = dfnilai_transaksi .quantile(0.25)
Q3 = dfnilai_transaksi .quantile(0.75)
IQR = Q3 - Q1
lower = Q1 - 1.5 * IQR
upper = Q3 + 1.5 * IQR
# Filter: pertahankan yang dalam range
df_clean = df[
(dfnilai_transaksi >= lower) &
(dfnilai_transaksi <= upper)
]
Q3 = df
IQR = Q3 - Q1
lower = Q1 - 1.5 * IQR
upper = Q3 + 1.5 * IQR
# Filter: pertahankan yang dalam range
df_clean = df[
(df
(df
]
Coba Sendiri: Uji Batas Outlier Metode IQR
Masukkan deretan nilai transaksi lalu amati bagaimana batas bawah/atas IQR menandai titik mana yang dianggap outlier.
Coba Sendiri: Hitung Z-Score dan Ambang 3 Standar Deviasi
Masukkan nilai data lalu lihat berapa standar deviasi jaraknya dari rata-rata, dan kapan ia dianggap outlier.
Studi Kasus: Cleaning Data Transaksi GoPay
Skenario: Dataset berisi 500.000 transaksi GoPay selama 1 bulan. Tim analytics menemukan beberapa masalah sebelum dapat membangun model deteksi fraud.
| Masalah Ditemukan | Proporsi | Penanganan |
|---|---|---|
| Kolom 'merchant_id' kosong | ~2.3% | Impute dengan 'UNKNOWN', flag sebagai kategori terpisah |
| Nilai transaksi negatif | ~0.1% | Validasi: refund → pertahankan; error → hapus |
| Duplikasi transaction_id | ~0.8% | Hapus duplikat, log untuk audit sistem |
| Outlier nilai transaksi (>Rp 50 juta) | ~0.05% | Pertahankan — bisa transaksi B2B yang valid |
Pipeline Cleaning Lengkap: Contoh BRImo
import pandas as pd
import numpy as np
# 1. Load data
df = pd.read_csv('brimo_transactions.csv')
# 2. Inspeksi awal
print(df.shape) # (1200000, 15)
print(df.isnull().sum())
# 3. Hapus duplikat
df = df.drop_duplicates(subset=transaction_id )
# 4. Standardisasi format tanggal
dfcreated_at = pd.to_datetime(dfcreated_at )
# 5. Impute missing amount dengan median per kategori
dfamount = df.groupby('category')amount .transform(
lambda x: x.fillna(x.median())
)
# 6. Filter outlier ekstrem (99.9th percentile)
cap = dfamount .quantile(0.999)
df = df[dfamount <= cap]
import numpy as np
# 1. Load data
df = pd.read_csv('brimo_transactions.csv')
# 2. Inspeksi awal
print(df.shape) # (1200000, 15)
print(df.isnull().sum())
# 3. Hapus duplikat
df = df.drop_duplicates(subset=
# 4. Standardisasi format tanggal
df
# 5. Impute missing amount dengan median per kategori
df
lambda x: x.fillna(x.median())
)
# 6. Filter outlier ekstrem (99.9th percentile)
cap = df
df = df[df
Diagram Alur Data Preprocessing
Rangkuman Pertemuan 4
Key Takeaways Hari Ini:
- Python vs R: Python unggul untuk deployment produksi; R unggul untuk analisis statistik mendalam. Keduanya saling melengkapi.
- Library utama: pandas (Python) dan dplyr (R) adalah tools manipulasi data primer yang wajib dikuasai.
- Data cleaning bukan opsional: 60-80% waktu analis dihabiskan di sini. Kualitas cleaning = kualitas keputusan.
- Missing values: Pilih strategi imputasi berdasarkan jenis data dan distribusinya, bukan sembarang hapus.
- Outliers: Tanya konteks bisnis sebelum hapus. Outlier bisa jadi sinyal penting (fraud, transaksi besar B2B).
Prinsip utama: Setiap keputusan cleaning harus dapat Anda jelaskan secara logis dan bisnis, bukan sekadar "mengikuti rumus".
Tugas & Diskusi
Tugas Individu (dikumpul minggu depan)
- Download dataset transaksi retail dari Kaggle (link di LMS)
- Lakukan inspeksi awal dan dokumentasikan temuan
- Identifikasi dan tangani missing values dengan teknik yang tepat (justify pilihan Anda)
- Deteksi outlier menggunakan metode IQR dan Z-score
- Buat laporan singkat (PDF) berisi kode Python + penjelasan keputusan
Diskusi Kelompok (hari ini)
Pertanyaan diskusi:
Dataset penjualan Tokopedia memiliki 15% missing values pada kolom 'harga_setelah_diskon'. Seorang analis mengusulkan imputasi dengan mean. Analis lain mengusulkan median. Manakah yang lebih tepat dan mengapa? Apa risiko masing-masing pendekatan?
Dataset penjualan Tokopedia memiliki 15% missing values pada kolom 'harga_setelah_diskon'. Seorang analis mengusulkan imputasi dengan mean. Analis lain mengusulkan median. Manakah yang lebih tepat dan mengapa? Apa risiko masing-masing pendekatan?
Pertanyaan & Diskusi
Gunakan waktu ini untuk bertanya atau mendiskusikan tantangan yang Anda temui dalam eksplorasi data hari ini.
Preview Pertemuan 5: Exploratory Data Analysis (EDA) dan Visualisasi Data
- Teknik EDA sistematis: univariat, bivariat, multivariat
- Visualisasi dengan matplotlib, seaborn, dan ggplot2
- Storytelling dengan data: dari insight ke keputusan bisnis
- Persiapan: pastikan library matplotlib dan seaborn sudah terinstal