Proyek terakhir course ini mengajak kita membaca penjualan sebagai deret waktu, bukan sekadar tabel transaksi. Studinya jaringan Toko Roti Manis dengan tiga outlet — Cihampelas di Bandung, Kemang di Jakarta, dan Malioboro di Yogyakarta — yang masing-masing mengirim rekap penjualan harian sepanjang 183 hari, 1 April sampai 30 September 2026. Datasetnya dibuat skrip deterministik (np.random.default_rng(19)) dan sengaja ditanami masalah yang lazim pada rekap harian: 8 baris ganda, 11 tanggal hilang, 6 omzet 0 atau negatif, dan 8 nilai kosong. Empat bagian berurutan membawa 546 baris mentah itu menjadi deret harian bersih 549 baris, lalu menjadi ringkasan tren siap lapor:
- Bagian 1: Mempersiapkan Data Waktu — memuat CSV, menjadikan kolom
tanggalsebagai DatetimeIndex yang terurut, mendeteksi tanggal ganda dan tanggal hilang dengandrop_duplicates(),Index.difference(), danreindex(), lalu mengisi celahnya denganinterpolate(method="time")per outlet. - Bagian 2: Mengagregasi Data per Periode — meringkas deret harian ke rekap mingguan (“W”) dan bulanan (“ME”) per outlet lewat
groupby().resample()danpd.Grouper, serta menyusun pivot outlet x bulan denganpivot_table(). - Bagian 3: Menganalisis Tren dan Perubahan — menghaluskan deret dengan
rolling()7 dan 30 hari, menghitung perubahan antar bulan denganpct_change()dandiff(), membandingkan dua semester, dan menandai puncak denganidxmax()/idxmin(). - Bagian 4: Menyusun Ringkasan Deret Waktu — membangun tabel ringkasan per outlet (total, rata-rata harian, bulan terbaik, pertumbuhan), narasi temuan bernomor, dan ekspor CSV, sekaligus menutup proyek.
Konsep intinya berasal dari section Data Waktu dan Deret Waktu — terutama chapter Datetime Index, Resampling Data, Rolling Window, Pergeseran Data dengan shift(), Menghitung Perubahan dengan diff(), dan Menangani Data Waktu yang Hilang — sedangkan Dasar DataFrame, GroupBy dan Agregasi, serta Menggabungkan dan Membentuk Data menjadi pendukung. Berbeda dengan proyek-proyek sebelumnya yang berpusat pada transaksi, harga, atau pengukuran, di sini sumbu waktu adalah tokoh utamanya: kelengkapan kalender dan musiman mingguan menentukan cara kita membersihkan dan membaca data. Skrip buat_dataset.py tersedia di folder tiap bagian; sejak Bagian 2, berkas itu juga menyediakan muat_bersih() agar semua bagian memakai dataset bersih yang identik. Kerjakan bagian demi bagian secara berurutan.
Memuat rekap penjualan harian Toko Roti Manis, menjadikan DatetimeIndex, dan menangani tanggal ganda, tanggal hilang, serta omzet tidak valid.
Buka → # Bagian 2: Mengagregasi Data per PeriodeMeringkas deret harian menjadi rekap mingguan dan bulanan per outlet dengan resample, lalu menyusun pivot outlet x bulan.
Buka → # Bagian 3: Menganalisis Tren dan PerubahanMenghitung rata-rata bergerak, perubahan antar bulan, dan membandingkan periode untuk membaca arah tren tiap outlet.
Buka → # Bagian 4: Menyusun Ringkasan Deret WaktuMenyusun tabel ringkasan per outlet, pivot bulan x outlet, narasi temuan, dan ekspor CSV untuk menutup proyek.
Buka →