Struktur Proyek

Notebook versus skrip, susunan folder, dan penguncian lingkungan.

Daftar isi

Proyek analisis yang dapat dipercaya dimulai dari strukturnya, yaitu letak berkas yang bisa ditebak, pembagian tugas notebook dan skrip yang disengaja, serta lingkungan yang versinya terkunci. Topik ini menyusun ketiganya untuk proyek analisis udara yang menjadi proyek penutup jalur ini. Setelah membacanya, proyek baru dimulai dari kerangka yang sama dan setiap berkas punya tempat yang jelas sejak hari pertama.

Susunan folder yang bisa ditebak#

Susunan yang baik memisahkan data mentah dari hasil, dan kode yang memprosesnya berdiri di antara keduanya. Pemisahan itu melindungi data mentah dari penyuntingan diam-diam, karena setiap perubahan dikerjakan kode dan dapat diulang, bukan diedit langsung pada berkas sumbernya.

text
analisis-udara/
├── data/
│   ├── mentah/            # berkas sumber, tidak pernah disunting
│   │   └── ukuran_udara.csv
│   └── hasil/             # grafik dan tabel keluaran
│       └── ringkasan-pipeline.png
├── notebook/
│   └── eksplorasi.ipynb   # EDA: pertanyaan, keputusan, temuan
├── src/
│   ├── bersihkan.py       # kamus pembersihan, satu sumber kebenaran
│   └── pipeline.py        # alur lengkap dari mentah ke hasil
├── requirements.txt       # versi pustaka yang terkunci
├── README.md              # cara menjalankan dan keputusan analisis
└── .gitignore             # daftar yang tidak masuk versi

Kerangka di atas sengaja kecil, dan proyek yang tumbuh menambahkan folder uji serta konfigurasi tanpa mengubah prinsipnya, yaitu data mentah yang utuh, kode yang berarah dari mentah ke hasil, dan dokumentasi yang menyertai keputusannya.

Kebiasaan yang menopangnya sederhana, yaitu tidak ada skrip yang menulis ke data/mentah, dan setiap berkas hasil membawa nama yang menyatakan isi dan tanggalnya, sehingga hasil dari dua eksekusi tidak saling menimpa secara diam-diam.

Notebook untuk eksplorasi, skrip untuk alur#

Notebook dan skrip melayani tahap yang berbeda, dan memakai keduanya pada tempatnya adalah keputusan yang menentukan reproduktibilitas. Notebook menjadi rumah eksplorasi, yaitu pertanyaan, keputusan, dan temuan yang bernarasi, sebagaimana disusun pada templat EDA, sedangkan skrip menjadi rumah alur yang mapan dan harus berjalan dari nol setiap kali dipanggil.

Tanda waktunya menyala ketika satu bagian notebook sudah tidak berubah lagi, yaitu bagian itu dipindahkan ke fungsi pada src/bersihkan.py, dan notebook menjadikannya import. Perpindahan bertahap ini menjaga notebook tetap lurus sebagaimana gerbang Run All, sementara skrip menampung yang sudah stabil.

Fungsi bersama yang diimpor menghilangkan duplikasi yang paling berbahaya, yaitu dua versi kamus pembersihan yang berjalan di dua berkas. Satu sumber kebenaran berarti satu tempat memperbaiki, dan hasil notebook dengan hasil pipeline tidak pernah berbeda diam-diam.

Lingkungan yang terkunci#

Lingkungan maya memisahkan pustaka proyek dari sistem, dan requirements.txt merekam versi persisnya sehingga proyek dapat dibangun ulang di mesin lain dengan perilaku yang sama. Berkas proyek penutup ini memuat enam pustaka beserta versinya.

text requirements.txt
numpy==2.1.3
pandas==2.2.3
matplotlib==3.9.2
seaborn==0.13.2
scikit-learn==1.5.2
scipy==1.14.1

Versi yang terkunci bukan ritual, melainkan pengalaman nyata bahwa pustaka mayor yang berubah dapat mengganti angka hasil analisis. pip freeze menghasilkan berkas ini dari lingkungan yang berjalan, dan README memuat tiga perintah yang membawa proyek dari nol sampai hasilnya.

README melengkapi tiga serangkai tersebut dengan dua bagian yang wajib, yaitu cara menjalankan dari nol dan daftar keputusan analisis beserta batasnya, dan bentuk lengkapnya dipakai pada modul penyerahan.

Kesalahan umum#

Kesalahan pertama adalah menyunting data mentah untuk memperbaiki keanehan. Perbaikan yang tidak lewat kode hilang pada salinan berikutnya, sedangkan langkah pembersihan di src/bersihkan.py dapat diperiksa dan diulang.

Kesalahan kedua adalah menyalin-tempel fungsi pembersihan antar berkas. Dua versi yang berbeda sebagian menghasilkan angka yang tidak cocok antar laporan, dan fungsi yang diimpor dari satu tempat menutupnya.

Kesalahan ketiga adalah menunda pencatatan versi sampai proyek selesai. Lingkungan yang berubah di tengah proyek membuat hasil sebelum dan sesudah tidak dapat dibandingkan, dan pip freeze dijalankan sejak minggu pertama.

Ringkasan#

  • Susunan folder memisahkan data mentah yang utuh, kode yang berarah dari mentah ke hasil, dan dokumentasi keputusannya.
  • Notebook menjadi rumah eksplorasi yang bernarasi, sedangkan bagian yang mapan berpindah ke skrip dan diimpor kembali.
  • Satu sumber kebenaran pembersihan mencegah angka antar laporan berbeda diam-diam.
  • requirements.txt yang dihasilkan pip freeze beserta README yang memuat cara menjalankan membuat proyek dapat dibangun ulang.

Referensi#