Prediksi menempel pada data: model hanya bisa belajar dari pola yang pernah tercatat. Pada bagian ini kita mengenal bahan bakunya — dari mana angka harga mingguan cabai merah berasal, bagaimana cara pencatatannya, dan bagaimana bentuk berkas harga_mingguan.csv yang akan menopang seluruh proyek. Mengenal asal data sejak awal menentukan batas tafsir prakiraan nanti: prediksi 4 minggu ke depan tidak boleh terdengar lebih pasti daripada data yang menopangnya.

Dari Mana Data Ini Berasal #

Setiap minggu selama 36 pekan, Bu Warni mencatat satu angka: harga rata-rata cabai merah di pasar tradisional tempat ia biasa berbelanja. Angka itu bukan harga satu transaksi, melainkan rata-rata kisaran harga yang ia catat dari beberapa pedagang pada pekan tersebut — cara yang sederhana, murah, dan cukup stabil untuk kebutuhan warung. Hasilnya satu deret: W1 sampai W36, dari minggu yang dimulai 2 Juni 2025 sampai minggu yang dimulai 2 Februari 2026.

AspekKeterangan
PencatatBu Warni, pemilik warung
SumberHarga rata-rata mingguan satu pasar tradisional di Surabaya
Periode36 minggu, W1 (2 Juni 2025) sampai W36 (2 Februari 2026)
Selang waktuTetap 7 hari; tiap baris bertanggal Senin tempat minggu dimulai
SatuanRibu rupiah per kilogram

Mengapa 36 minggu? Untuk horizon 4 minggu, kita butuh riwayat yang memuat beberapa putaran pola musiman agar model punya contoh untuk belajar — sekaligus cukup panjang untuk menyisihkan 6 minggu uji tanpa menggerus data latih. Materi tentang menimbang sumber data dibahas tuntas pada chapter Sumber Data .

Mencatat Asal-Usul Data #

Asal-usul data (provenance) adalah catatan singkat yang menjawab: siapa yang mencatat, dari mana, kapan, dan dalam satuan apa. Praktik ini membuat analisis dapat dipercaya ketika dijalankan ulang berbulan-bulan kemudian — oleh kita sendiri maupun orang lain:

python
provenance = {
    "pencatat": "Bu Warni (pemilik warung)",
    "sumber_utama": "harga rata-rata mingguan satu pasar tradisional di Surabaya",
    "periode": "W1-W36, minggu mulai 2 Juni 2025 s.d. 2 Februari 2026",
    "selang": "7 hari (mingguan, tanggal mulai Senin)",
    "satuan": "ribu rupiah per kilogram",
}
for kunci, nilai in provenance.items():
    print(f"{kunci:12}: {nilai}")

Output yang Dihasilkan:

text
pencatat    : Bu Warni (pemilik warung)
sumber_utama: harga rata-rata mingguan satu pasar tradisional di Surabaya
periode     : W1-W36, minggu mulai 2 Juni 2025 s.d. 2 Februari 2026
selang      : 7 hari (mingguan, tanggal mulai Senin)
satuan      : ribu rupiah per kilogram

Lima baris itu adalah kontrak data kita: siapa pun yang membaca prakiraan ini tahu bahwa angkanya berlaku untuk satu komoditas, satu pasar, 36 minggu, dan satuan ribu rupiah per kilogram. Kebiasaan mencatat asal-usul data dibahas lebih jauh pada chapter Pencatatan Asal Data .

Struktur Berkas CSV #

Berkas data/harga_mingguan.csv berbentuk deret waktu: baris-barisnya adalah pengamatan yang sama jenisnya, berurutan waktu, dengan selang tetap 7 hari. Tiga kolomnya:

KolomTipeMakna
mingguteksPenanda minggu W1–W36; W1 = minggu mulai 2 Juni 2025
tanggal_mulaiteks tanggalSenin tempat minggu itu dimulai, format YYYY-MM-DD
harga_ribuangkaHarga rata-rata minggu itu, ribu rupiah per kilogram

Dengan 36 minggu, kita berharap menemukan tepat 36 baris. Kenyataannya, seperti terlihat sebentar lagi, jumlahnya lebih dari itu — dan selisihnya bukan kebetulan, melainkan bahan Bagian 3. Konsep dasar data berurutan waktu dibahas pada chapter Pengenalan Deret Waktu .

Membaca Sekilas dengan pandas #

Ketika kode pada bagian-bagian proyek ini dijalankan, direktori kerjanya adalah folder bagian, sehingga berkas data berada satu tingkat di atasnya — itulah sebabnya path yang dipakai adalah ../data/harga_mingguan.csv. Berikut bacaan pertama kita:

python
import pandas as pd

df = pd.read_csv("../data/harga_mingguan.csv")
print("Jumlah baris :", df.shape[0])
print("Jumlah kolom :", df.shape[1])
print("Nama kolom   :", list(df.columns))
print()
print(df.head(12))

Output yang Dihasilkan:

text
Jumlah baris : 38
Jumlah kolom : 3
Nama kolom   : ['minggu', 'tanggal_mulai', 'harga_ribu']

   minggu tanggal_mulai harga_ribu
0      W1    2025-06-02       40.1
1      W2    2025-06-09       40.1
2      W3    2025-06-16       40.1
3      W4    2025-06-23       38.8
4      W5    2025-06-30       36.4
5      W6    2025-07-07       35.9
6      W7    2025-07-14       37.2
7      W8    2025-07-21       38.6
8      W9    2025-07-28       39.9
9     W10    2025-08-04       41.4
10    W10    2025-08-04       41.4
11    W10    2025-08-04       41.4

Mari kita telaah keluaran di atas:

  1. df.shape[0] bernilai 38: harapan kita 36, kenyataannya 38. Ada dua baris lebih — dan dua baris itu sudah terlihat telanjang di head(12): W10 tercatat tiga kali dengan isi yang persis sama, hasil entri ulang yang lupa dihapus.
  2. Kolom harga_ribu: pada dua belas baris pertama tampil sebagai angka, tetapi di suatu tempat di bawah ada satu sel yang bukan angka — satu tanda - pada W27 yang membuat pandas membaca seluruh kolom sebagai teks. Kita belum melihatnya di sini; itulah mengapa validasi sistematis pada Bagian 3 tidak bisa digantikan oleh pandangan sekilas.
  3. tanggal_mulai berformat YYYY-MM-DD: format ini mengurutkan benar sebagai teks — sifat yang akan kita pakai saat membersihkan data tanpa harus mengubahnya ke tipe tanggal.

Fungsi read_csv() punya banyak opsi untuk berkas yang tidak rapi; daftar lengkapnya ada di dokumentasi pandas untuk read_csv . Kita sengaja tidak memakai opsi khusus apa pun saat memuat: kita ingin melihat data sekecil apa adanya sebelum memperlakukannya.

Ringkasan Bagian 2 #

Data harga berasal dari catatan mingguan Bu Warni atas satu pasar di Surabaya: 36 minggu dari Juni 2025 sampai Februari 2026, satu angka rata-rata per minggu, satuan ribu rupiah per kilogram, dengan asal-usul yang tercatat. Pembacaan pertama sudah menemukan kejanggalan pertama: 38 baris padahal seharusnya 36, dengan W10 tercatat tiga kali.

Kejanggalan itu tidak kita biarkan begitu saja. Pada Bagian 3: Memvalidasi Data kita memeriksanya secara sistematis: urutan minggu, duplikat, sel tidak wajar, dan rentang harga.