"""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.")
