proyekpandasMahir8 mnt baca

Proyek Analisis Data End-to-End

Panduan mengerjakan proyek analisis lengkap: menggabungkan banyak sumber data, cleaning, analisis, visualisasi, sampai struktur laporan yang meyakinkan.

Kenapa proyek end-to-end adalah portofoliomu yang sebenarnya

Sertifikat dan nilai kuis tidak meyakinkan perekrut. Yang meyakinkan adalah satu proyek rapi yang menunjukkan kamu bisa membawa data mentah yang berantakan menjadi rekomendasi bisnis yang jelas. Modul ini adalah peta jalan proyek seperti itu. Anggap semua modul sebelumnya sebagai perkakas di kotak, dan modul ini sebagai denah cara merakitnya menjadi sesuatu yang utuh.

Analogi: proyek analisis itu seperti meliput investigasi

Wartawan investigasi tidak mulai dari menulis. Ia mengumpulkan dokumen dari banyak sumber, memverifikasi mana yang bisa dipercaya, menemukan pola di tumpukan bukti, lalu menulis cerita yang bisa dipertanggungjawabkan. Proyek analisismu persis sama: kumpulkan, bersihkan, temukan pola, ceritakan. Laporan yang bagus selalu bisa ditelusuri kembali ke datanya.

Tahap 1: gabungkan banyak sumber data

Data nyata jarang datang dalam satu file rapi. Contoh proyek warkop: data transaksi harian dalam CSV dari aplikasi kasir, data stok bahan dalam Excel dari gudang, dan data cuaca dari API publik (untuk menguji hipotesis "hujan menaikkan penjualan kopi panas").

python
import pandas as pd

transaksi = pd.read_csv("transaksi_oktober.csv", parse_dates=["tanggal"])
stok = pd.read_excel("stok_bahan.xlsx", sheet_name="Oktober")

# Contoh ambil data cuaca dari API (sesuaikan dengan API pilihanmu)
import requests
cuaca = pd.DataFrame(
    requests.get("https://api.contoh-cuaca.id/harian?bulan=10").json()
)
cuaca["tanggal"] = pd.to_datetime(cuaca["tanggal"])

gabungan = transaksi.merge(
    cuaca[["tanggal", "curah_hujan"]], on="tanggal", how="left"
)
print(gabungan.shape)
print(gabungan.dtypes)

Kunci tahap ini: samakan format kunci gabungan (tanggal harus datetime di semua sumber sebelum di-merge), dan catat dari mana tiap kolom berasal. Dokumentasi sumber adalah hal pertama yang ditanyakan reviewer.

Tahap 2: cleaning yang jujur dan terdokumentasi

python
# 1. Cek duplikat dan data hilang
print("Duplikat:", gabungan.duplicated().sum())
print(gabungan.isna().sum())

# 2. Tangani missing value dengan sadar, bukan asal drop
# curah_hujan kosong berarti sensor mati, isi dengan median
gabungan["curah_hujan"] = gabungan["curah_hujan"].fillna(
    gabungan["curah_hujan"].median()
)

# 3. Selidiki outlier sebelum memutuskan
q1 = gabungan["total_bayar"].quantile(0.25)
q3 = gabungan["total_bayar"].quantile(0.75)
iqr = q3 - q1
outlier = gabungan[gabungan["total_bayar"] > q3 + 1.5 * iqr]
print(f"Kandidat outlier: {len(outlier)} transaksi")
# Keputusan: pisahkan analisis dengan/tanpa outlier, jangan diam-diam dibuang

Aturan emas cleaning: setiap keputusan (isi missing value, buang duplikat, perlakukan outlier) harus bisa kamu jelaskan dalam satu kalimat di laporan. "Saya drop 3 persen baris karena duplikat" jauh lebih baik daripada dataset yang tiba-tiba bersih tanpa penjelasan.

Tahap 3 dan 4: analisis lalu visualisasi

python
# Analisis: agregasi per kategori per minggu + korelasi cuaca
mingguan = gabungan.groupby(
    [pd.Grouper(key="tanggal", freq="W"), "kategori"]
)["total_bayar"].sum().unstack()

korelasi = gabungan[["curah_hujan", "total_bayar"]].corr()
print(korelasi)
python
import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4))
mingguan.plot(ax=ax1, marker="o")
ax1.set_title("Omzet Mingguan per Kategori")
ax1.grid(alpha=0.3)
ax2.scatter(gabungan["curah_hujan"], gabungan["total_bayar"],
            alpha=0.4)
ax2.set_title("Curah Hujan vs Total Bayar")
ax2.set_xlabel("Curah hujan (mm)")
fig.tight_layout()
plt.show()

Urutan ini penting: analisis dulu (angka), visualisasi kemudian (cerita). Chart yang dibuat sebelum kamu tahu angkanya cenderung menjadi dekorasi, bukan bukti.

Tahap 5: struktur laporan yang meyakinkan

Satu halaman ringkasan eksekutif di awal: pertanyaan bisnis, temuan utama (maksimal 3), dan rekomendasi. Baru setelah itu metodologi singkat (sumber data, langkah cleaning), temuan detail dengan chart, keterbatasan analisis (data apa yang kurang, asumsi apa yang dipakai), dan lampiran kode. Perekrut membaca ringkasannya dalam 2 menit, jadi 80 persen nilaimu ditentukan di halaman pertama.

Jebakan umum 1: langsung analisis tanpa memahami sumber data

SALAH: merge tiga sumber lalu langsung groupby, tanpa pernah melihat isi tiap file. Akibatnya tanggal yang beda format gagal merge diam-diam (how="left" menghasilkan NaN massal), atau kolom "total" yang ternyata sudah termasuk pajak dijumlahkan dua kali.

BENAR: luangkan 30 menit untuk head(), dtypes, describe(), dan isna().sum() di tiap sumber sebelum menggabungkan. Fase ini membosankan tapi menyelamatkanmu dari kesimpulan yang salah total.

Jebakan umum 2: laporan berisi chart tanpa satu pun rekomendasi

Laporan yang hanya bilang "penjualan naik 20 persen" adalah laporan yang belum selesai. Pertanyaan lanjutan yang selalu ditanya: lalu apa yang harus kita lakukan? Setiap temuan harus diakhiri dengan "maka disarankan...". Contoh: "Hujan berkorelasi 0.6 dengan penjualan kopi panas, maka disarankan menambah stok 15 persen saat prakiraan hujan di atas 10 mm."

Catatan teknis: Simpan notebook analisismu dengan struktur folder yang konsisten: data/raw/ (jangan pernah diubah), data/processed/, notebooks/, reports/. Ini standar de facto industri (cookiecutter-data-science) dan membuat proyekmu langsung terlihat profesional saat dibuka perekrut.

Ringkasan cepat

  • Alur proyek: kumpulkan banyak sumber, cleaning terdokumentasi, analisis, visualisasi, laporan.
  • Samakan format kunci sebelum merge, catat asal tiap kolom.
  • Setiap keputusan cleaning harus bisa dijelaskan satu kalimat.
  • Laporan: ringkasan eksekutif dulu, temuan maksimal 3, tiap temuan diakhiri rekomendasi.

Tantangan

Rancang blueprint proyek analisismu

Pilih satu dataset publik (misal data penjualan, cuaca, atau harga saham). Tulis blueprint 1 halaman: sumber data, 5 pertanyaan bisnis yang ingin dijawab, daftar cleaning yang diperkirakan perlu, dan 3 visualisasi yang akan dibuat. Belum perlu coding, fokus ke perencanaan.