Data tanpa visualisasi adalah angka yang tidak bercerita. Proyek ini melatih alur kerja visualisasi lengkap dari awal hingga akhir: memilih dataset yang tepat, mengimpor dan membersihkannya, membuat beberapa grafik yang menjawab pertanyaan analisis, lalu mengekspor hasil menjadi laporan siap dibagikan.

Alur tahapannya:

  • pemilihan dataset — menetapkan pertanyaan analisis dan dataset numerik yang menjawabnya,
  • import dan pembersihan — membaca data mentah dan merapikannya,
  • pembuatan visualisasi — memilih jenis grafik dan menyusun layout multi-panel,
  • ekspor laporan — menyimpan figur dan ringkasan teks ke folder laporan.

Seluruh kode sumber setiap tahap tersedia pada bagian Berkas Sumber di bawah halaman setiap bagian.

Perilaku yang Diharapkan #

Sebelum menulis kode, mari kita tetapkan perilaku akhir program. Satu panggilan jalankanPipeline('latihan') harus menjalankan enam tahap berurutan, mencetak progres tiap tahap, dan meninggalkan folder keluaran yang rapi. Transkrip berikut adalah hasil nyata satu eksekusi:

text
== Pipeline Visualisasi Dataset ==
Folder kerja: latihan

[1/6] Membuat dataset sintetis ...
      data/penjualan.csv: 36 bulan x 3 produk
[2/6] Memuat data ...
      36 baris, 3 nilai kosong, 2 kandidat outlier (|z| > 2.5)
[3/6] Membersihkan data ...
      3 NaN diimputasi (median), 2 outlier dikoreksi (clip IQR)
[4/6] Menghitung statistik ...
      Total 36 bulan: kopi 21403, teh 12358, susu 19580 unit
[5/6] Membuat visualisasi ...
      hasil/tren_bulanan.png
      hasil/distribusi_penjualan.png
      hasil/perbandingan_tahunan.png
[6/6] Mengekspor laporan ...
      hasil/laporan_ringkasan.txt

Selesai. Semua keluaran ada di folder hasil/.

Fitur yang Dibangun #

FiturPerilaku
Dataset sintetis deterministik36 bulan penjualan 3 produk dibangun dari formula tetap tanpa RNG — identik di setiap eksekusi, di MATLAB maupun Octave
Masalah data disuntikkan3 sel NaN (laporan hilang) dan 2 pencilan (entri terduplikasi, salah titik desimal) ditanam sengaja
Baca CSV dengan guardreadmatrix di MATLAB R2019a+, dlmread dengan offset header di Octave — satu berkas, dua lingkungan
Imputasi medianNaN diganti median kolom; median tahan pencilan sehingga imputasi tidak tergeser data ekstrem
Koreksi pencilankandidat outlier dideteksi z-score (|z| > 2.5), lalu dipotong ke pagar Tukey [Q1-1.5*IQR, Q3+1.5*IQR]
Tiga figur analisisline plot tren, histogram distribusi (subplot), grouped bar tahunan + errorbar std — headless, PNG 150 dpi
Laporan otomatislaporan_ringkasan.txt: statistik per produk, tabel tahunan, temuan utama (produk terbaik, puncak musiman, tren), daftar figur
Idempotenmenjalankan ulang pada folder yang sama menimpa keluaran dengan isi identik
Test terstrukturtests/uji_pipeline.m memeriksa CSV, pembersihan, statistik, figur, laporan, dan idempotensi dengan assert

Tujuan Pembelajaran #

  • Memecah analisis data menjadi pipeline modular: satu fungsi, satu tanggung jawab, dirangkai orkestrator.
  • Menulis kode kompatibel dua mesin dengan pola guard exist untuk I/O berkas.
  • Membersihkan data nyata secara terukur: menghitung NaN, mengimputasi median, mendeteksi pencilan z-score, dan membatasi dengan pagar IQR.
  • Menggambar figur headless (figure('visible','off') + print -dpng -r150) yang aman di server dan runner tanpa layar.
  • Menyusun laporan teks dengan fprintf yang rata kolom serta temuan yang dihitung, bukan diketik.
  • Menguji pipeline end-to-end dan membuktikan idempotensi dengan assert dan isequal.

Prasyarat #

Materi berikut perlu dikuasai sebelum memulai proyek ini:

  • Statistik Deskriptif dari section Statistik dan Analisis Data (mean, std, median, kuantil)
  • Missing Data dan Data Cleaning dari section Pengolahan Data
  • Membaca File CSV dan Menulis File Data dari section Import dan Export Data
  • Line Plot, Bar Chart, dan Histogram dari section Visualisasi Data
  • Labels, Title, dan Legend, Subplot dan Layout, serta Export Figures dari section Visualisasi Data
  • Assertions dan Unit Testing dari section Debugging dan Pengujian

Struktur Proyek #

Kode dipisah menjadi tujuh modul di src/ dan satu berkas uji di tests/:

text
visualisasi-dataset/
├── _index.md
├── bagian/
│   ├── pemilihan-dataset/
│   │   └── index.md
│   ├── import-dan-pembersihan-data/
│   │   └── index.md
│   ├── pembuatan-visualisasi/
│   │   └── index.md
│   └── ekspor-laporan/
│       └── index.md
├── src/
│   ├── buatDataset.m        - dataset sintetis deterministik -> CSV
│   ├── muatData.m           - baca CSV + laporan NaN & outlier
│   ├── bersihkanData.m      - imputasi median + clip pagar IQR
│   ├── hitungStatistik.m    - statistik per produk & per tahun
│   ├── buatVisualisasi.m    - tiga figur PNG (headless, 150 dpi)
│   ├── eksporLaporan.m      - laporan_ringkasan.txt
│   └── jalankanPipeline.m   - orkestrasi enam tahap
└── tests/
    └── uji_pipeline.m       - uji end-to-end berbasis assert

Cara Menjalankan #

Buka folder proyek, pasang src/ ke path sekali per sesi, lalu panggil orkestrator dengan nama folder kerja:

matlab
addpath('src');                     % sekali per sesi
hasil = jalankanPipeline('latihan');

Program membuat folder latihan/ bila belum ada, lalu meninggalkan struktur keluaran berikut:

text
latihan/
├── data/
│   └── penjualan.csv            - dataset mentah (36 baris, 3 produk)
└── hasil/
    ├── tren_bulanan.png         - figur 1: tren bulanan tiga produk
    ├── distribusi_penjualan.png - figur 2: histogram per produk
    ├── perbandingan_tahunan.png - figur 3: total tahunan + std
    └── laporan_ringkasan.txt    - laporan siap dibagikan

Untuk menguji seluruh proyek secara otomatis, jalankan berkas uji dari folder tests/:

text
>> uji_pipeline
== uji_pipeline.m ==
LULUS: CSV terbentuk dengan 36 baris data
LULUS: muatData menemukan 3 NaN dan 2 kandidat outlier
LULUS: pembersihan mengimputasi 3 NaN dan meng-clip 2 outlier
LULUS: statistik identik dengan hitungan manual
LULUS: 3 figur PNG dan laporan lengkap terbentuk
LULUS: eksekusi ulang idempoten (hasil identik)
folder uji dibersihkan: tidak ada residu di /tmp

Ringkasan: 6 kelompok uji lulus, 0 gagal

Tahapan Pengerjaan #

Proyek dikerjakan dalam empat bagian berurutan. Setiap bagian menghasilkan modul yang bisa dijalankan dan diuji pada tahapnya:

  1. Bagian 1: Pemilihan Dataset — pertanyaan analisis, kriteria dataset, rancangan formula sintetis, dan struktur kolom.
  2. Bagian 2: Import dan Pembersihan Data — baca CSV dengan guard, deteksi NaN, imputasi median, dan koreksi pencilan.
  3. Bagian 3: Pembuatan Visualisasi — tiga figur yang menjawab tiga pertanyaan analisis, digambar headless dan disimpan 150 dpi.
  4. Bagian 4: Ekspor Laporan — laporan teks terstruktur, temuan otomatis, idempotensi, uji end-to-end, dan checklist deliverable.

Mulailah dari Bagian 1 dan ikuti urutannya karena setiap modul dibangun di atas keluaran modul sebelumnya.