✦ End-to-End Data Analytics Bootcamp ✦

Dari Data Mentah Menjadi
Insight yang Berbicara

Satu perjalanan belajar penuh: bersihkan data kotor, jawab pertanyaan bisnis, dan bangun dashboard interaktif — semua dengan satu dataset nyata yang mengalir di setiap modul.

🟢 Excel 🔷 SQL 🐍 Python 🟡 Power BI 🎯 Study Case
5 Modul + Insight Lanjutan Dataset 2 Tahun (Jul 2024–Jun 2026) Studi Kasus & Analisis YoY
5Modul
2 TahunDataset
556Transaksi
8+Insight
🚀 Mulai Belajar 📝 Lembar Kerja

📥 Lampiran Data & Data Sheet

Seluruh modul menggunakan satu dataset penjualan retail selama 2 tahun (Juli 2024 – Juni 2026, 561 baris) yang sengaja dibuat kotor agar dapat dipakai berlatih data cleaning secara nyata. Cakupan 2 tahun memungkinkan analisis year-over-year (mis. "produk apa yang laku di bulan yang sama tahun lalu?") dan dataset ini juga mengandung pola musiman tersembunyi untuk ditemukan peserta.

Kamus Data (Data Dictionary)

KolomTipeDeskripsi
order_idTeksNomor unik transaksi (format ORD-XXXX)
tanggalTanggalTanggal transaksi (format seharusnya YYYY-MM-DD)
nama_pelangganTeksNama pembeli
kotaTeksKota pengiriman (Jakarta, Bandung, Surabaya, Semarang)
produkTeksNama produk yang dibeli
kategoriTeksAksesoris / Elektronik / Penyimpanan
jumlahAngkaKuantitas pembelian
harga_satuanAngka (Rp)Harga per unit
totalAngka (Rp)Seharusnya = jumlah × harga_satuan

Preview Data (15 baris pertama)

Masalah yang Sengaja Ditanam DIRTY DATA

  • Duplikat: 5 baris muncul dua kali — ORD-2031, ORD-2131, ORD-2231, ORD-2341, ORD-2451.
  • Penulisan kota tidak konsisten (±119 baris): huruf kapital semua (JAKARTA), huruf kecil semua (bandung), dan huruf kecil + spasi di akhir (surabaya␣).
  • Format tanggal campur (±44 baris): YYYY-MM-DD, DD/MM/YYYY, dan 7 Sep 2025.
  • Nilai kosong: kota 6 baris (mis. ORD-2026, ORD-2091), jumlah 3 baris (ORD-2061, ORD-2211, ORD-2381), harga_satuan 2 baris (ORD-2121, ORD-2301), total beberapa baris (mis. ORD-2046, ORD-2241, ORD-2441).
  • Typo nama produk: Mouse Wirelless (ORD-2088, ORD-2100), Keybord Mechanical (ORD-2082, ORD-2085).
  • Nilai tidak wajar: jumlah negatif pada ORD-2151 dan ORD-2401 (kemungkinan retur/salah input).
  • Total salah hitung: ORD-2101 dan ORD-2281 — kolom total tidak sama dengan jumlah × harga_satuan (harus diaudit, bukan hanya dicek kosong).
Target akhir cleaning: 556 transaksi unik, kota seragam (4 kota), tanggal seragam, tanpa nilai kosong pada kolom kunci, dan kolom total konsisten = jumlah × harga_satuan.

1 Fundamental Data Analyst & Excel

Tujuan: peserta memahami alur kerja analis data dan mampu melakukan data cleaning + analisis dasar menggunakan Excel.

1.1 Konsep Dasar

  • Peran Data Analyst: mengubah data mentah menjadi insight untuk pengambilan keputusan.
  • Alur kerja: Ask (pertanyaan bisnis) → Collect (kumpulkan data) → Clean (bersihkan) → Analyze (analisis) → Visualize (visualisasi) → Share (komunikasi insight).
  • Struktur data tabular: 1 baris = 1 record/transaksi, 1 kolom = 1 variabel/atribut.

1.2 Langkah Praktik: Data Cleaning di Excel

  1. Buka data_penjualan_retail.csv di Excel → simpan sebagai .xlsx.
  2. Blok seluruh data → Insert → Table agar rapi dan mudah difilter.
  3. Hapus duplikat: Data → Remove Duplicates (centang semua kolom). Excel akan melaporkan 5 baris duplikat dihapus.
  4. Rapikan teks kota — buat kolom bantu kota_bersih:
    =PROPER(TRIM(D2))
    TRIM menghapus spasi berlebih, PROPER menyeragamkan kapitalisasi → "jakarta " menjadi "Jakarta".
  5. Perbaiki typo produk: Ctrl+H (Find & Replace) → ganti Mouse WirellessMouse Wireless, dan Keybord MechanicalKeyboard Mechanical.
  6. Cari sel kosong: blok data → Home → Find & Select → Go To Special → Blanks. Isi berdasarkan aturan (mis. harga_satuan Headset Gaming = 350000 dari transaksi lain).
  7. Hitung ulang total agar konsisten:
    =G2*H2
  8. Seragamkan tanggal: blok kolom tanggal → Data → Text to Columns → Date (DMY/YMD) → format ulang menjadi YYYY-MM-DD.
Ilustrasi langkah Remove Duplicates di Excel
Ilustrasi Langkah 3: Data → Remove Duplicates — centang semua kolom, lalu klik OK. Baris duplikat terhapus otomatis.
Ilustrasi cleaning dengan formula PROPER(TRIM()) dan Find & Replace
Ilustrasi Langkah 4–5: formula =PROPER(TRIM(D2)) menyeragamkan penulisan kota, dan Find & Replace membereskan typo nama produk.

1.3 Langkah Praktik: Analisis Dasar

Contoh formula analisis (asumsikan data di tabel bernama Penjualan):

' Total revenue seluruh transaksi
=SUM(Penjualan[total])

' Total revenue kota Jakarta
=SUMIFS(Penjualan[total], Penjualan[kota_bersih], "Jakarta")

' Jumlah transaksi per produk
=COUNTIFS(Penjualan[produk], "Mouse Wireless")

' Rata-rata nilai transaksi kategori Elektronik
=AVERAGEIFS(Penjualan[total], Penjualan[kategori], "Elektronik")

Pivot Table: Insert → PivotTable → seret kota_bersih ke Rows, total ke Values (Sum) → terlihat kota dengan revenue tertinggi.

Ilustrasi Pivot Table revenue per kota di Excel
Ilustrasi Pivot Table: kota di Rows, total di Values (Sum), plus bar chart revenue per kota.
Catatan: gambar-gambar di atas adalah ilustrasi visual (mockup) dari setiap langkah — tampilan di komputer peserta bisa sedikit berbeda tergantung versi Excel.
OUTPUT File Excel berisi: sheet data bersih + sheet Pivot Table ringkasan revenue per kota & per produk.

2 Introduction to SQL

Tujuan: peserta mampu menulis query SELECT untuk mengambil, memfilter, dan meringkas data dari database.

2.1 Konsep Dasar

  • Database = kumpulan tabel; tabel = kumpulan baris & kolom (mirip sheet Excel).
  • SQL (Structured Query Language) = bahasa standar untuk mengambil dan mengolah data di database.
  • Tools tanpa instalasi: SQLite Online atau DB Fiddle — cukup import file CSV sebagai tabel penjualan.

2.2 Query Dasar

-- Lihat seluruh data
SELECT * FROM penjualan;

-- Pilih kolom tertentu
SELECT order_id, produk, total FROM penjualan;

-- Filter: transaksi di Jakarta dengan total di atas 500 ribu
SELECT order_id, produk, total
FROM penjualan
WHERE kota = 'Jakarta' AND total > 500000;

-- Urutkan 5 transaksi terbesar
SELECT order_id, produk, total
FROM penjualan
ORDER BY total DESC
LIMIT 5;

2.3 Agregasi & Grouping

-- Total revenue seluruh transaksi
SELECT SUM(total) AS total_revenue FROM penjualan;

-- Revenue per kota, diurutkan dari terbesar
SELECT kota,
       COUNT(*)   AS jumlah_transaksi,
       SUM(total) AS revenue
FROM penjualan
GROUP BY kota
ORDER BY revenue DESC;

-- Produk dengan unit terjual terbanyak
SELECT produk, SUM(jumlah) AS unit_terjual
FROM penjualan
GROUP BY produk
ORDER BY unit_terjual DESC;

-- Hanya kategori dengan revenue di atas 3 juta (HAVING)
SELECT kategori, SUM(total) AS revenue
FROM penjualan
GROUP BY kategori
HAVING SUM(total) > 3000000;

2.4 Deteksi Data Kotor dengan SQL

-- Cek order_id duplikat
SELECT order_id, COUNT(*) AS jumlah
FROM penjualan
GROUP BY order_id
HAVING COUNT(*) > 1;

-- Cek variasi penulisan kota
SELECT DISTINCT kota FROM penjualan;

-- Cek baris dengan nilai kosong
SELECT * FROM penjualan
WHERE kota IS NULL OR kota = ''
   OR jumlah IS NULL OR total IS NULL;

2.5 Analisis Year-over-Year (Habit Tahun Lalu)

Karena dataset mencakup 2 tahun, kita bisa menjawab: "di bulan yang sama tahun lalu, produk apa saja yang laku?"

-- Produk yang laku di bulan Juni, dibandingkan antar tahun
SELECT strftime('%Y', tanggal) AS tahun,
       produk,
       SUM(jumlah) AS unit_terjual
FROM penjualan
WHERE strftime('%m', tanggal) = '06'
GROUP BY tahun, produk
ORDER BY tahun, unit_terjual DESC;

-- Revenue per bulan per tahun (bahan perbandingan musiman)
SELECT strftime('%m', tanggal) AS bulan,
       SUM(CASE WHEN strftime('%Y', tanggal) = '2025' THEN total ELSE 0 END) AS rev_2025,
       SUM(CASE WHEN strftime('%Y', tanggal) = '2026' THEN total ELSE 0 END) AS rev_2026
FROM penjualan
GROUP BY bulan
ORDER BY bulan;
Fungsi strftime berlaku di SQLite; di MySQL gunakan YEAR(tanggal) / MONTH(tanggal), di SQL Server gunakan DATEPART.
OUTPUT Kumpulan 8–10 query tersimpan yang menjawab: revenue per kota, produk terlaris, transaksi terbesar, dan daftar anomali data.

3 Introduction to Python (Google Colab & Pandas)

Tujuan: peserta mampu memuat, membersihkan, dan meringkas data dengan Pandas, serta membuat grafik sederhana di Google Colab.

3.1 Persiapan Google Colab

  1. Buka colab.research.google.comNew Notebook.
  2. Upload dataset: klik ikon 📁 di sidebar kiri → Upload → pilih data_penjualan_retail.csv.
  3. Jalankan cell dengan Shift+Enter.
Ilustrasi tampilan Google Colab
Ilustrasi 3.1: tampilan Google Colab — file browser di kiri (tempat upload CSV), area cell di tengah, indikator runtime di kanan atas.

3.2 Load & Eksplorasi Data

import pandas as pd

df = pd.read_csv('data_penjualan_retail.csv')

df.head(10)        # lihat 10 baris pertama
df.info()          # tipe data & jumlah nilai kosong per kolom
df.describe()      # statistik ringkas kolom angka
df.shape           # (561, 9) -> 561 baris, 9 kolom

3.3 Data Cleaning dengan Pandas

# 1. Hapus baris duplikat (561 -> 556 baris)
df = df.drop_duplicates()

# 2. Seragamkan penulisan kota: hapus spasi + kapitalisasi awal
df['kota'] = df['kota'].str.strip().str.title()

# 3. Perbaiki typo nama produk
df['produk'] = df['produk'].replace({
    'Mouse Wirelless': 'Mouse Wireless',
    'Keybord Mechanical': 'Keyboard Mechanical'
})

# 4. Seragamkan format tanggal (format campuran -> datetime)
df['tanggal'] = pd.to_datetime(df['tanggal'], format='mixed', dayfirst=True)

# 5. Isi harga satuan kosong berdasarkan harga produk yang sama
df['harga_satuan'] = df.groupby('produk')['harga_satuan'] \
                       .transform(lambda x: x.fillna(x.median()))

# 6. Tangani jumlah kosong / negatif
df['jumlah'] = df['jumlah'].fillna(1)          # asumsi minimal beli 1
df['jumlah'] = df['jumlah'].abs()              # -1 dianggap salah input

# 7. Hitung ulang kolom total agar konsisten
df['total'] = df['jumlah'] * df['harga_satuan']

# 8. Cek hasil akhir
df.info()
df.isna().sum()    # pastikan tidak ada nilai kosong tersisa

3.4 Analisis & Visualisasi

# Revenue per kota
df.groupby('kota')['total'].sum().sort_values(ascending=False)

# Produk terlaris berdasarkan unit
df.groupby('produk')['jumlah'].sum().sort_values(ascending=False)

# Tren revenue bulanan
df['bulan'] = df['tanggal'].dt.to_period('M')
tren = df.groupby('bulan')['total'].sum()
tren.plot(kind='line', marker='o', title='Tren Revenue Bulanan')

# --- Analisis Year-over-Year: habit tahun lalu di bulan yang sama ---
df['tahun'] = df['tanggal'].dt.year
df['no_bulan'] = df['tanggal'].dt.month

# Produk yang laku di bulan Juni, dibandingkan antar tahun
juni = df[df['no_bulan'] == 6]
juni.pivot_table(index='produk', columns='tahun', values='jumlah', aggfunc='sum')

# Pola musiman: unit terjual per produk per bulan (cikal bakal heatmap)
df.pivot_table(index='produk', columns='no_bulan', values='jumlah', aggfunc='sum')

# Simpan data bersih untuk dipakai di Power BI
df.to_csv('data_penjualan_bersih.csv', index=False)
Ilustrasi pipeline cleaning Pandas
Ilustrasi 3.3: pipeline cleaning Pandas — baris berkurang 561 → 556, nilai kosong = 0.
Ilustrasi analisis YoY dengan pivot_table
Ilustrasi 3.4: perbandingan unit Juni 2025 vs Juni 2026 dengan pivot_table + grouped bar chart.
OUTPUT Notebook Colab tersimpan + file data_penjualan_bersih.csv (bahan Modul 4).

4 Power BI — Visualisasi & Mini Dashboard

Tujuan: peserta mampu mengimpor data, melakukan transformasi ringan di Power Query, dan membangun satu halaman dashboard interaktif.

4.1 Prinsip Visualisasi Singkat

  • Perbandingan antar kategori → Bar chart.
  • Tren dari waktu ke waktu → Line chart.
  • Angka kunci (KPI) → Card.
  • Proporsi (maks. 4–5 bagian) → Pie/Donut chart.
  • Hindari chart junk: 3D, warna berlebihan, terlalu banyak visual dalam satu halaman.

4.2 Langkah Import & Transformasi

  1. Buka Power BI Desktop → Get Data → Text/CSV → pilih data_penjualan_bersih.csv (hasil Modul 3; boleh juga CSV mentah untuk berlatih cleaning di Power Query).
  2. Klik Transform Data (Power Query) dan pastikan:
    • tanggal bertipe Date; jumlah, harga_satuan, total bertipe Whole Number.
    • Jika memakai data mentah: Remove Duplicates, Transform → Format → Trim & Capitalize Each Word pada kolom kota, Replace Values untuk typo produk.
  3. Close & Apply.
Ilustrasi Get Data → Text/CSV
Ilustrasi 4.2: Get Data → Text/CSV dengan preview data sebelum dimuat.
Ilustrasi Power Query Editor
Ilustrasi 4.2: Power Query Editor dengan Applied Steps — setiap langkah cleaning tercatat dan dapat di-undo.

4.3 Membuat Measure (DAX)

Total Revenue = SUM(penjualan[total])

Jumlah Transaksi = COUNTROWS(penjualan)

Rata-rata Nilai Order = DIVIDE([Total Revenue], [Jumlah Transaksi])

Total Unit Terjual = SUM(penjualan[jumlah])

Time intelligence (perbandingan tahun lalu) — buat dulu tabel tanggal: Modeling → New TableTabelTanggal = CALENDARAUTO(), lalu hubungkan ke kolom tanggal:

Revenue Tahun Lalu = CALCULATE([Total Revenue], SAMEPERIODLASTYEAR(TabelTanggal[Date]))

YoY Growth % = DIVIDE([Total Revenue] - [Revenue Tahun Lalu], [Revenue Tahun Lalu])

4.4 Menyusun Mini Dashboard (1 Halaman)

Baris atas — KPI Cards:
  • Card: Total Revenue
  • Card: Jumlah Transaksi
  • Card: Rata-rata Nilai Order
Area utama — Visual:
  • Bar chart: Revenue per Kota
  • Bar chart: Unit Terjual per Produk
  • Line chart: Tren Revenue per Bulan (+ garis Revenue Tahun Lalu untuk YoY)
  • Matrix: Produk × Bulan (unit terjual) — untuk melihat pola musiman
  • Slicer: Kategori, Tahun, dan/atau rentang Tanggal
Ilustrasi Matrix visual untuk analisis musiman
Ilustrasi visual Matrix: Produk × Bulan — sel berwarna gradien, bulan puncak (Nov–Des untuk Monitor/SSD, Jun–Agu untuk Headset Gaming) otomatis menonjol.

Uji interaktivitas: klik salah satu kota di bar chart → semua visual lain otomatis terfilter (cross-filtering).

Ilustrasi mini dashboard Power BI
Ilustrasi 4.4: tata letak mini dashboard — 3 KPI card di atas, bar chart + line chart (dengan garis Revenue Tahun Lalu) di bawah, slicer di samping.
OUTPUT File .pbix berisi 1 halaman dashboard interaktif dengan minimal 3 KPI card + 3 visual + 1 slicer.

5 Integrated Study Case

Tujuan: peserta menjalankan alur end-to-end secara mandiri — Raw Data → Cleaning → Analysis → Dashboard → Insight — menggunakan tools pilihan sendiri.

5.1 Skenario Bisnis

Anda adalah Data Analyst di toko online "TokoTech". Manajer memberi Anda data penjualan mentah 2 tahun terakhir (Juli 2024 – Juni 2026) (data_penjualan_retail.csv) dan meminta laporan untuk rapat evaluasi tahunan.

5.2 Pertanyaan Bisnis yang Harus Dijawab

  1. Produk apa yang paling laris (berdasarkan unit) dan produk apa penyumbang revenue terbesar? Apakah keduanya sama?
  2. Kota mana dengan revenue tertinggi, dan bagaimana urutan keempat kota?
  3. Bagaimana tren revenue bulanan selama 2 tahun? Bulan apa yang selalu tertinggi — apakah polanya berulang tiap tahun?
  4. Kategori mana yang mendominasi revenue, dan berapa persen kontribusinya?
  5. (YoY) Dibanding bulan yang sama tahun lalu, produk apa yang lebih laku dan yang menurun? Pola kebiasaan (habit) musiman apa yang bisa Anda temukan?
  6. (Bonus) Masalah kualitas data apa saja yang Anda temukan, dan keputusan apa yang Anda ambil untuk masing-masing?

5.3 Langkah Pengerjaan

  1. Cleaning — pilih Excel (Modul 1) atau Pandas (Modul 3). Dokumentasikan setiap keputusan (mis. "jumlah -1 diubah menjadi 1 karena diasumsikan salah input").
  2. Analysis — jawab pertanyaan bisnis dengan Pivot Table, SQL, atau Pandas.
  3. Dashboard — tuangkan jawaban ke satu halaman Power BI mengikuti pola Modul 4.
  4. Insight — tulis 3–5 kalimat insight + 1 rekomendasi aksi. Insight yang baik: angka + konteks + rekomendasi. Contoh pola: "Monitor 24 inch menyumbang X% revenue meski unitnya sedikit — pertimbangkan bundling dengan aksesoris untuk menaikkan basket size."
🔑 Panduan Kunci untuk Instruktur (klik untuk membuka)
  • Cleaning yang benar menghasilkan: 556 transaksi unik (dari 561 baris); 4 kota seragam (Jakarta, Bandung, Surabaya, Semarang); tanggal seragam; tidak ada nilai kosong; total = jumlah × harga_satuan (termasuk memperbaiki 2 baris total salah hitung).
  • Q1: produk terlaris by unit ≠ penyumbang revenue terbesar — Mouse Wireless (±210 unit) dan USB Hub unggul di unit, tetapi Monitor 24 inch dominan di revenue (±Rp 127,8 juta dari total ±Rp 320,5 juta). Ini poin diskusi utama.
  • Q2: urutan revenue: Jakarta (±Rp 119,7 jt) > Surabaya (±Rp 87,8 jt) > Bandung (±Rp 70,8 jt) > Semarang (±Rp 42,3 jt). Angka final peserta boleh sedikit berbeda tergantung keputusan cleaning (mis. cara mengisi 6 baris kota kosong) — yang dinilai adalah konsistensi proses.
  • Q3: puncak revenue terjadi di Desember 2025 (±Rp 33 jt) dan Desember 2024 (±Rp 20,4 jt) — pola Harbolnas yang berulang tiap tahun; volume juga tumbuh dari 2024 ke 2025.
  • Q4: Aksesoris kategori terbesar (±43% revenue) karena jumlah produknya banyak, tetapi produk tunggal terbesar adalah Monitor 24 inch (Elektronik, ±40%).
  • Q5 (YoY): Juni 2025 dipimpin Headset Gaming (8 unit — awal musim liburan), sedangkan Juni 2026 dipimpin USB Hub & Mouse Wireless (8 unit). Pola musiman yang ditanam: Headset Gaming & Laptop Stand memuncak Juni–Agustus (liburan/tahun ajaran baru), Monitor & SSD memuncak November–Desember (Harbolnas).
  • Q6 (bonus): minimal menemukan 5 dari 7 jenis masalah yang ditanam (lihat bagian Data Sheet), termasuk yang paling tersembunyi: total salah hitung ORD-2101 & ORD-2281.

Rubrik penilaian sederhana (100 poin): Cleaning tepat & terdokumentasi (30) · Jawaban analisis benar & berdasar (30) · Dashboard rapi & interaktif (25) · Kualitas insight & rekomendasi (15).

Catatan penting: angka final antar peserta boleh sedikit berbeda tergantung keputusan cleaning (mis. mengisi vs menghapus baris kosong). Yang dinilai adalah konsistensi dan alasan di balik setiap keputusan.
OUTPUT 1 file data bersih + 1 dashboard Power BI + ringkasan insight (3–5 kalimat) yang dipresentasikan singkat.

💡 Insight Lanjutan — di atas Fundamental

Tujuan: setelah menguasai analisis dasar (revenue per kota/produk, tren bulanan), peserta mengenal kemungkinan-kemungkinan insight lanjutan yang bisa digali dari dataset yang sama — tanpa perlu tools baru.

Peta Kemungkinan Insight

1

🔄 Year-over-Year

"Di bulan ini tahun lalu, produk apa yang laku? Sekarang naik atau turun?"
Pivot produk × tahun untuk bulan yang sama — SQL strftime, Pandas pivot_table, DAX SAMEPERIODLASTYEAR.
2

📅 Pola Musiman

"Produk apa yang punya bulan puncak berulang tiap tahun?"
Matrix produk × bulan (unit terjual) — heatmap; stok bisa disiapkan sebelum bulan puncak.
3

📈 Pertumbuhan MoM / YoY

"Berapa persen bisnis tumbuh dibanding bulan/tahun lalu?"
(periode ini − periode lalu) ÷ periode lalu — Pandas pct_change(), DAX YoY Growth %.
4

🎯 Pareto 80/20 Produk

"Berapa produk yang menyumbang 80% revenue?"
Urutkan revenue produk → hitung persentase kumulatif — fokus stok & promosi ke produk inti.
5

💰 AOV & Basket Size

"Apakah nilai belanja rata-rata per order naik dari waktu ke waktu?"
Rata-rata total per order per bulan — bahan strategi bundling/upselling.
6

👥 Pelanggan Repeat (RFM)

"Siapa pelanggan paling sering dan paling besar belanjanya?"
Agregasi per nama_pelanggan: frekuensi order + total belanja — dataset ini memuat kelompok pelanggan loyal untuk ditemukan.
7

🗺 Afinitas Kota × Produk

"Produk favorit tiap kota apa? Perlukah promosi berbeda per kota?"
Crosstab kota × produk — Pandas pd.crosstab, Power BI Matrix.
8

🔍 Audit Anomali Berkala

"Ada berapa transaksi janggal tiap bulan?"
Filter jumlah < 0 atau total ≠ jumlah × harga — insight tentang kualitas proses input data.
Cara memakai di kelas: jadikan menu "tantangan lanjutan" — peserta yang selesai Study Case lebih cepat memilih 1–2 insight dari kartu di atas, lalu menambahkannya sebagai halaman kedua dashboard. Insight #1, #2, dan #6 paling cocok untuk dataset ini karena polanya memang sengaja ditanam.

Contoh Implementasi Cepat (Pandas)

# 3. Pertumbuhan bulanan (MoM %)
tren = df.groupby(df['tanggal'].dt.to_period('M'))['total'].sum()
tren.pct_change().mul(100).round(1)

# 4. Pareto 80/20: persentase kumulatif revenue per produk
rev = df.groupby('produk')['total'].sum().sort_values(ascending=False)
(rev.cumsum() / rev.sum() * 100).round(1)

# 6. Pelanggan top: frekuensi order & total belanja
df.groupby('nama_pelanggan').agg(
    frekuensi=('order_id', 'nunique'),
    total_belanja=('total', 'sum')
).sort_values('total_belanja', ascending=False).head(10)

# 7. Afinitas kota x produk (unit terjual)
pd.crosstab(df['kota'], df['produk'], values=df['jumlah'], aggfunc='sum')
Cara memakai di kelas: jadikan menu "tantangan lanjutan" — peserta yang selesai Study Case lebih cepat memilih 1–2 insight dari tabel di atas, lalu menambahkannya sebagai halaman kedua dashboard. Insight #1, #2, dan #6 paling cocok untuk dataset ini karena polanya memang sengaja ditanam.
Batas dataset dummy ini: analisis lanjutan seperti market basket (produk yang dibeli bersamaan) dan cohort retention membutuhkan data multi-item per order dan periode lebih panjang — sampaikan sebagai wawasan, tidak untuk dipraktikkan di sini.