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.
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 versiKerangka 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.
numpy==2.1.3
pandas==2.2.3
matplotlib==3.9.2
seaborn==0.13.2
scikit-learn==1.5.2
scipy==1.14.1Versi 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.txtyang dihasilkanpip freezebeserta README yang memuat cara menjalankan membuat proyek dapat dibangun ulang.
Referensi#
- Cookiecutter Data Science — driven data — konvensi struktur proyek data yang dipakai luas di komunitas.
- venv — Creation of virtual environments — Python documentation — dokumentasi resmi lingkungan maya yang dipakai proyek ini.