Dua belas angka pada Bagian 1, empat tabel pada Bagian 2, dan tiga grafik pada Bagian 3 kini menunggu satu bentuk terakhir: ringkasan temuan. Berbeda dari laporan proyek pertama yang ditujukan kepada pembaca laporan kelas, temuan analisis harga ditujukan kepada pembaca yang ingin tahu keputusan belanja atau kebijakan — bentuk yang paling penting justru bagian paling ringkasnya: komoditas mana yang naik paling cepat, mana yang paling tidak stabil, dan seberapa besar selisih keduanya. Pada bagian ini kita menyusun temuan_lengkap.py, skrip mandiri yang menjalankan pembersihan dan seluruh analisis dari nol, lalu mencetak ringkasan temuan yang padat.

Merancang Ringkasan Temuan #

Temuan dirancang menjawab empat pertanyaan secara berurutan. Pertama, seperti apa sekarang keadaan harga — dijawab statistik per komoditas: mean, std, minimum, dan maksimum dari 24 bulan bersih. Kedua, seberapa cepat harga naik — dijawab total kenaikan dua tahun dan rata-rata perubahan bulanan. Ketiga, komoditas mana yang paling fluktuatif — dijawab koefisien variasi. Istilah terakhir ini belum pernah dipakai di course, jadi mari diperkenalkan: koefisien variasi (CV) adalah standar deviasi dibagi mean, biasanya dinyatakan dalam persen. Membaginya dengan mean membuat sebaran dua komoditas dengan level harga berbeda bisa dibandingkan secara adil — std 1066 Rp pada beras bermakna jauh lebih besar daribanding std 934 Rp pada gula, karena level beras memang lebih rendah. Keempat, apa yang dilakukan terhadap data bermasalah — dijawab catatan pembersihan, karena temuan yang tidak menjelaskan perbaikan datanya akan sulit dipercaya.

Skrip temuan_lengkap.py #

Skrip berikut menjalankan seluruh alur dalam satu berkas: data mentah tertanam lengkap dengan dua masalahnya, pembersihan dikerjakan ulang di awal, dan seluruh temuan dihitung dari hasil bersih tersebut. Simpan sebagai temuan_lengkap.py lalu jalankan dengan python3 temuan_lengkap.py:

python temuan_lengkap.py
"""temuan_lengkap.py -- ringkasan temuan analisis harga komoditas.

Dataset: harga bulanan beras, gula pasir, dan minyak goreng selama
24 bulan (Jan 2025 s.d. Des 2026). Dua sel bermasalah ada pada data
mentah: satu sel kosong dan satu anomali; keduanya dibersihkan di
awal skrip agar seluruh temuan memakai data bersih yang sama.
"""

import statistics

BERAS = [12500, 12800, 12700, 13100, 13400, 13300, 13600, 13900, 13800, 14200, 14500, 14400,
         14600, 14500, 14800, 15000, 14900, 15200, 15400, 15600, 15500, 15800, 16000, 15900]
GULA_MENTAH = [16000, 16200, 16100, 16400, 16600, 16500, 16800, 17000, 16900, 17200, 17400, 17300,
               17500, None, 17800, 18000, 17900, 18200, 18400, 18600, 18500, 18800, 19000, 18900]
MINYAK_MENTAH = [15600, 15800, 15700, 16000, 16200, 16100, 16400, 16600, 16500, 16800, 17000, 16900,
                 17100, 17200, 17400, 17300, 17500, 17600, 17800, 24000, 17900, 18100, 18000, 18300]

GULA = [17650 if v is None else v for v in GULA_MENTAH]        # sel kosong diisi interpolasi
MINYAK = [17850 if v == 24000 else v for v in MINYAK_MENTAH]   # anomali diganti tetangga
KOMODITAS = [("beras", BERAS), ("gula pasir", GULA), ("minyak goreng", MINYAK)]


def perubahan_bulanan(data):
    return [(data[i] - data[i - 1]) / data[i - 1] * 100 for i in range(1, len(data))]


print("TEMUAN ANALISIS HARGA KOMODITAS - JAN 2025 s.d. DES 2026")
print("=" * 56)
print("Statistik harga bersih (Rp/kg):")
for nama, data in KOMODITAS:
    print(f"  {nama:<13s}: mean {statistics.mean(data):8.2f}  std {statistics.stdev(data):7.2f}  "
          f"min {min(data)}  max {max(data)}")

print()
print("Kenaikan harga:")
for nama, data in KOMODITAS:
    total = (data[23] - data[0]) / data[0] * 100
    pct = perubahan_bulanan(data)
    print(f"  {nama:<13s}: total 2 tahun {total:6.2f}%  "
          f"rata-rata bulanan {sum(pct) / len(pct):.2f}%")

print()
print("Kestabilan harga (koefisien variasi = std / mean):")
cv_semua = {}
for nama, data in KOMODITAS:
    cv = statistics.stdev(data) / statistics.mean(data) * 100
    cv_semua[nama] = cv
    print(f"  {nama:<13s}: CV {cv:5.2f}%")
paling = max(cv_semua, key=cv_semua.get)
print(f"  komoditas paling fluktuatif: {paling}")

print()
print("Catatan pembersihan data:")
print("  gula pasir 2026-02 kosong; diisi interpolasi tetangga 17500 dan 17800 = 17650")
print("  minyak goreng 2026-08 tercatat 24000; diganti rata-rata tetangga 17800 dan 17900 = 17850")

print()
print("Kesimpulan")
print(f"1. ketiga komoditas naik dua tahun berurutan; beras paling cepat "
      f"({(BERAS[23] - BERAS[0]) / BERAS[0] * 100:.2f}% dalam 2 tahun).")
print(f"2. {paling} sekaligus paling fluktuatif: koefisien variasi "
      f"{cv_semua[paling]:.2f}%, gejolak bulanan terbesar.")
print("3. gula pasir dan minyak goreng naik lebih landai dan lebih stabil.")
print("4. dua sel bermasalah ditangani dengan interpolasi dan penggantian tetangga.")

Perhatikan tiga keputusan implementasi. Data mentah — dengan None dan 24000 masih ada di tempatnya — sengaja dipertahankan sebagai data tertanam, lalu pembersihan dikerjakan ulang oleh dua baris list comprehension; cara ini membuat skrip jujur menunjukkan masalah aslinya sekaligus mendokumentasikan perbaikannya di tempat yang sama. Function perubahan_bulanan merangkum rumus perubahan persen yang dipakai berulang. Kesimpulan nomor 1 dan 2 dihitung dari data lewat f-string, bukan disalin — hanya kalimatnya yang ditulis tangan, angkanya tetap lahir dari perhitungan.

Output yang Dihasilkan #

Jalankan skrip dari foldernya, dan ringkasan temuan tercetak dalam 28 baris:

Output yang Dihasilkan:

text
TEMUAN ANALISIS HARGA KOMODITAS - JAN 2025 s.d. DES 2026
========================================================
Statistik harga bersih (Rp/kg):
  beras        : mean 14391.67  std 1066.04  min 12500  max 16000
  gula pasir   : mean 17485.42  std  934.54  min 16000  max 19000
  minyak goreng: mean 16985.42  std  816.60  min 15600  max 18300

Kenaikan harga:
  beras        : total 2 tahun  27.20%  rata-rata bulanan 1.06%
  gula pasir   : total 2 tahun  18.12%  rata-rata bulanan 0.73%
  minyak goreng: total 2 tahun  17.31%  rata-rata bulanan 0.70%

Kestabilan harga (koefisien variasi = std / mean):
  beras        : CV  7.41%
  gula pasir   : CV  5.34%
  minyak goreng: CV  4.81%
  komoditas paling fluktuatif: beras

Catatan pembersihan data:
  gula pasir 2026-02 kosong; diisi interpolasi tetangga 17500 dan 17800 = 17650
  minyak goreng 2026-08 tercatat 24000; diganti rata-rata tetangga 17800 dan 17900 = 17850

Kesimpulan
1. ketiga komoditas naik dua tahun berurutan; beras paling cepat (27.20% dalam 2 tahun).
2. beras sekaligus paling fluktuatif: koefisien variasi 7.41%, gejolak bulanan terbesar.
3. gula pasir dan minyak goreng naik lebih landai dan lebih stabil.
4. dua sel bermasalah ditangani dengan interpolasi dan penggantian tetangga.

Membaca Temuan #

Empat bagian temuan menjawab empat pertanyaan perancangannya. Statistik harga menegaskan urutan level: gula pasir termahal (mean 17485.42), disusul minyak goreng (16985.42) dan beras (14391.67) — dengan std beras terbesar, petunjuk fluktuasi yang kini terkonfirmasi. Bagian kenaikan merangkum temuan Bagian 2: beras 27.20 persen dalam dua tahun atau 1.06 persen per bulan, mengungguli gula pasir (18.12 persen) dan minyak goreng (17.31 persen). Bagian kestabilan memperkenalkan pembaca pada koefisien variasi: CV beras 7.41 persen lawan 5.34 dan 4.81 persen, sehingga beras dinobatkan sebagai komoditas paling fluktuatif — keputusan yang diambil oleh max(cv_semua, key=cv_semua.get), bukan oleh kebiasaan melihat std mentah. Catatan pembersihan mengabadikan dua perbaikan Bagian 1 beserta nilai penggantinya, dan kesimpulan menutup dengan temuan utama: kenaikan tercepat dan gejolak terbesar ternyata berdiam pada komoditas yang sama.

Proyek kedua tuntas dengan alur penuh: data mentah yang bermasalah dibersihkan secara terdokumentasi, pergerakan diukur tiga cara, divisualkan tiga bentuk, dan dirangkum menjadi temuan yang setiap angkanya dapat dilacak ke hitungan sebelumnya. Dua proyek yang baru saja kita kerjakan — data cross-sectional nilai siswa dan deret waktu harga komoditas — memperlihatkan bahwa alur kerja analisis konsisten meski karakter datanya berbeda. Proyek penutup course, Analisis Dataset dengan Python, mengulang alur yang sama pada dataset yang lebih kaya dan mengakhiri dengan interpretasi hasil yang berhati-hati.

Berkas Sumber

Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.

temuan_lengkap.py

Unduh berkas
python
"""temuan_lengkap.py -- ringkasan temuan analisis harga komoditas.

Dataset: harga bulanan beras, gula pasir, dan minyak goreng selama
24 bulan (Jan 2025 s.d. Des 2026). Dua sel bermasalah ada pada data
mentah: satu sel kosong dan satu anomali; keduanya dibersihkan di
awal skrip agar seluruh temuan memakai data bersih yang sama.
"""

import statistics

BERAS = [12500, 12800, 12700, 13100, 13400, 13300, 13600, 13900, 13800, 14200, 14500, 14400,
         14600, 14500, 14800, 15000, 14900, 15200, 15400, 15600, 15500, 15800, 16000, 15900]
GULA_MENTAH = [16000, 16200, 16100, 16400, 16600, 16500, 16800, 17000, 16900, 17200, 17400, 17300,
               17500, None, 17800, 18000, 17900, 18200, 18400, 18600, 18500, 18800, 19000, 18900]
MINYAK_MENTAH = [15600, 15800, 15700, 16000, 16200, 16100, 16400, 16600, 16500, 16800, 17000, 16900,
                 17100, 17200, 17400, 17300, 17500, 17600, 17800, 24000, 17900, 18100, 18000, 18300]

GULA = [17650 if v is None else v for v in GULA_MENTAH]        # sel kosong diisi interpolasi
MINYAK = [17850 if v == 24000 else v for v in MINYAK_MENTAH]   # anomali diganti tetangga
KOMODITAS = [("beras", BERAS), ("gula pasir", GULA), ("minyak goreng", MINYAK)]


def perubahan_bulanan(data):
    return [(data[i] - data[i - 1]) / data[i - 1] * 100 for i in range(1, len(data))]


print("TEMUAN ANALISIS HARGA KOMODITAS - JAN 2025 s.d. DES 2026")
print("=" * 56)
print("Statistik harga bersih (Rp/kg):")
for nama, data in KOMODITAS:
    print(f"  {nama:<13s}: mean {statistics.mean(data):8.2f}  std {statistics.stdev(data):7.2f}  "
          f"min {min(data)}  max {max(data)}")

print()
print("Kenaikan harga:")
for nama, data in KOMODITAS:
    total = (data[23] - data[0]) / data[0] * 100
    pct = perubahan_bulanan(data)
    print(f"  {nama:<13s}: total 2 tahun {total:6.2f}%  "
          f"rata-rata bulanan {sum(pct) / len(pct):.2f}%")

print()
print("Kestabilan harga (koefisien variasi = std / mean):")
cv_semua = {}
for nama, data in KOMODITAS:
    cv = statistics.stdev(data) / statistics.mean(data) * 100
    cv_semua[nama] = cv
    print(f"  {nama:<13s}: CV {cv:5.2f}%")
paling = max(cv_semua, key=cv_semua.get)
print(f"  komoditas paling fluktuatif: {paling}")

print()
print("Catatan pembersihan data:")
print("  gula pasir 2026-02 kosong; diisi interpolasi tetangga 17500 dan 17800 = 17650")
print("  minyak goreng 2026-08 tercatat 24000; diganti rata-rata tetangga 17800 dan 17900 = 17850")

print()
print("Kesimpulan")
print(f"1. ketiga komoditas naik dua tahun berurutan; beras paling cepat "
      f"({(BERAS[23] - BERAS[0]) / BERAS[0] * 100:.2f}% dalam 2 tahun).")
print(f"2. {paling} sekaligus paling fluktuatif: koefisien variasi "
      f"{cv_semua[paling]:.2f}%, gejolak bulanan terbesar.")
print("3. gula pasir dan minyak goreng naik lebih landai dan lebih stabil.")
print("4. dua sel bermasalah ditangani dengan interpolasi dan penggantian tetangga.")