Belajar Data Scientist - Exploratory Data Analysis (EDA)
Episode 6 of 28

Belajar Data Scientist - Exploratory Data Analysis (EDA)

Menguasai Exploratory Data Analysis: merangkum statistik, mengukur korelasi, dan menggali insight awal dari data — dilengkapi praktik EDA lengkap yang menjadi dasar sebelum masuk ke modeling

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah di episode 5 kita membersihkan data, pada episode ini kita berkenalan dengan data yang sudah bersih itu secara mendalam melalui Exploratory Data Analysis (EDA). EDA adalah proses menjawab pertanyaan "apa yang data ini katakan?" sebelum kita memutuskan model apa yang akan dibangun.

Mengapa EDA begitu penting? Karena model tidak bisa menebak pola yang tidak kalian lihat lebih dulu. Model yang dilatih tanpa EDA biasanya menghasilkan fitur yang salah, target yang salah, atau asumsi yang keliru. Tukang kayu mengukur kayu sebelum memotong; data scientist mengeksplorasi data sebelum memodelkan. EDA juga sering menjadi sumber insight terbaik: banyak keputusan bisnis lahir dari grafik yang tidak pernah masuk ke model sama sekali.

Kerangka EDA

EDA yang baik berjalan terstruktur. Kerangka yang bisa dipakai di setiap proyek:

  1. Gambaran umum — ukuran data, tipe, target, dan variabel kunci.
  2. Distribusi univariat — bagaimana tiap variabel menyebar sendiri.
  3. Hubungan bivariat — bagaimana tiap variabel berhubungan dengan target.
  4. Multivariat & insight — kombinasi variabel yang menghasilkan temuan.
  5. Kesimpulan & pertanyaan lanjutan — daftar insight dan hipotesis.

Ringkasan Statistik

Mulai dari statistik ringkas seluruh kolom — pola yang langsung terlihat di sini akan menuntun eksplorasi:

Ringkasan statistik menyeluruh
import pandas as pd
 
df = pd.read_csv("telco_churn.csv")
 
print(df.shape)
print(df.dtypes.value_counts())
print(df.describe())
print(df["churn"].value_counts(normalize=True))

Perhatikan dari describe(): rentang nilai yang masuk akal? ada yang bernilai negatif untuk variabel yang seharusnya positif? distribusi simetris atau miring? Setiap keanehan adalah peta menuju pertanyaan berikutnya.

Note

value_counts(normalize=True) pada kolom target memberi tahu baseline paling penting dalam proyek klasifikasi: jika hanya 18% customer churn, maka model yang selalu memprediksi "tidak churn" sudah akurat 82%. Episode 9 dan 11 akan memakai baseline ini terus-menerus.

Distribusi Univariat

Eksplorasi tiap variabel untuk memahami bentuknya:

Distribusi univariat
import numpy as np
 
for col in ["tenure", "monthly_charges", "total_charges"]:
    print(col)
    print("  skew :", round(df[col].skew(), 3))
    print("  missing:", df[col].isna().sum())
 
print(df["contract"].value_counts())
print(df["internet_service"].value_counts())

Variabel numerik yang miring bisa membutuhkan transformasi (episode 10); variabel kategorikal dengan level langka bisa digabung. Keduanya adalah keputusan yang muncul dari EDA, bukan asumsi.

Korelasi

Korelasi mengukur kekuatan hubungan linier antar dua variabel. Di EDA, matriks korelasi adalah peta awal fitur terhadap target:

Matriks korelasi
import numpy as np
 
num_cols = df.select_dtypes(include=[np.number]).columns
corr = df[num_cols].corr()
print(corr["churn"].sort_values(ascending=False))
 
high = np.where((abs(corr) > 0.8) & (abs(corr) < 1.0))
pairs = [(corr.index[i], corr.columns[j])
         for i, j in zip(*high) if i < j]
print("pasangan sangat berkorelasi:", pairs)

Menangani Korelasi Tinggi antar Fitur

Fitur yang saling berkorelasi kuat (multikolinearitas) tidak selalu merusak, tetapi: (1) menambah noise pada model linier, (2) menyulitkan interpretasi koefisien, (3) membuang waktu training. Kalian bisa membuang salah satunya atau menggabungkannya — keputusan detailnya ada di episode 10.

Korelasi vs Kausalitas

Korelasi tinggi tidak berarti sebab-akibat. total_charges dan tenure sangat berkorelasi karena keduanya bertambah seiring waktu — bukan karena satu menyebabkan yang lain. Episode 16 akan membahas bagaimana cara yang benar membuktikan kausalitas (A/B testing dan causal inference).

Bivariat terhadap Target

Eksplorasi paling informatif adalah melihat hubungan tiap variabel dengan target:

Perbandingan grup terhadap target
print(df.groupby("contract")["churn"].mean())
print(df.groupby("payment_method")["churn"].mean())
print(df.groupby("senior_citizen")["churn"].mean())
 
print(df.groupby("churn")["monthly_charges"].mean())

Pola yang hampir selalu muncul di dataset churn: customer bulanan churn jauh lebih tinggi daripada customer tahunan, dan pelanggan yang churn membayar monthly charges lebih tinggi. Insight semacam ini adalah cerita yang akan kalian sampaikan di episode 17.

Praktik: EDA Lengkap

Berikut alur EDA penuh yang menggabungkan semuanya — termasuk visualisasi sederhana yang akan diperdalam di episode 7:

Praktik EDA lengkap
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
 
df = pd.read_csv("telco_churn.csv")
 
# 1. Gambaran umum
print("shape:", df.shape, "| target:", df["churn"].mean().round(3))
 
# 2. Univariat numerik
num_cols = ["tenure", "monthly_charges"]
fig, axes = plt.subplots(1, 2, figsize=(10, 3))
for ax, col in zip(axes, num_cols):
    df[col].hist(bins=40, ax=ax)
    ax.set_title(col)
plt.tight_layout()
plt.show()
 
# 3. Univariat kategorikal
for col in ["contract", "internet_service"]:
    print(df[col].value_counts(normalize=True).round(3))
 
# 4. Bivariat: churn per group
print(df.groupby("contract")["churn"].mean().round(3))
print(df.groupby("internet_service")["churn"].mean().round(3))
 
# 5. Korelasi numerik vs target
corr = df[num_cols + ["churn"]].corr()["churn"].drop("churn")
print(corr.sort_values(ascending=False))

Dari output EDA ini, kalian sudah bisa menebak fitur mana yang paling menjanjikan, apakah perlu transformasi, dan cerita apa yang akan disampaikan ke stakeholder.

Kesalahan Umum EDA

PitfallDampakSolusi
Langsung modeling tanpa EDAFitur salah, asumsi keliruSelalu eksplorasi dulu
Memakai correlation hanyaKehilangan pola non-linierKombinasikan dengan plot & groupby
Mengira korelasi = kausalitasKeputusan bisnis keliruUji eksperimen (episode 16)
EDA tanpa pertanyaanOutput tanpa arahMulai dari hipotesis & target
Tidak mencatat temuanInsight hilang di notebookSimpan kesimpulan per langkah

Penutup

Inti yang harus dibawa pulang:

  • EDA menjawab "apa yang data katakan?" sebelum modeling — kerangkanya: gambaran umum → univariat → bivariat → multivariat → insight.
  • Statistik ringkas dan value_counts memberi baseline dan peta awal.
  • Korelasi memetakan hubungan, tetapi bukan bukti kausalitas.
  • Bivariat terhadap target (misal churn per contract) adalah sumber insight bisnis terbaik.
  • Catat setiap temuan — EDA adalah bagian dari cerita yang kalian sampaikan ke stakeholder.

Di episode 7 selanjutnya kita akan membahas data visualization — Matplotlib, Seaborn, dan Plotly untuk mengubah temuan EDA menjadi cerita visual yang meyakinkan. Sampai jumpa di episode 7!

Belajar Data Scientist - Exploratory Data Analysis (EDA) | Belajar Data Scientist