Penyiapan Lingkungan

Memasang Python, Jupyter, dan pustaka inti data science beserta disiplin pengelolaan lingkungannya.

Daftar isi

Lingkungan kerja data science bertumpu pada Python dan beberapa pustaka inti, yaitu NumPy, pandas, Matplotlib, seaborn, dan scikit-learn, dengan Jupyter sebagai wadah kerja interaktifnya. Topik ini memandang pemasangannya secara berurutan, menjelaskan fungsi setiap pustaka, dan menutupnya dengan disiplin pengelolaan lingkungan yang menyelamatkan proyek dari kekacauan versi. Setelah menyelesaikannya, lingkungan yang terpasang dapat diperiksa dengan satu skrip kecil dan dapat dibangun ulang oleh orang lain dari satu berkas requirements.txt.

Memasang Python dan lingkungan maya#

Python 3.12 atau yang lebih baru menjadi dasar yang dianjurkan pada jalur ini. Pemasangannya berbeda antar sistem operasi, tetapi langkah setelahnya sama, yaitu membuat virtual environment, yaitu folder berisi salinan terisolasi dari Python beserta pustakanya. Isolasi ini mencegah proyek satu dengan yang lain berebut versi pustaka, dan inilah disiplin pertama yang harus terbentuk sebelum baris analisis pertama ditulis.

bash
# tidak-dijalankan
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip

Perintah kedua mengaktifkan lingkungan pada sesi terminal yang berjalan, yang ditandai nama .venv di awal baris perintah. Setiap pemasangan paket sesudahnya, termasuk peningkatan pip pada perintah ketiga, masuk ke dalam isolasi tersebut dan tidak menyentuh Python milik sistem. Apabila terminal ditutup, lingkungan diaktifkan kembali dengan perintah yang sama.

Pustaka inti dan fungsinya#

Enam pustaka menopang hampir seluruh jalur ini, dan mengetahui batas tugas masing-masing menolong pembaca membaca dokumentasinya dengan tepat.

PustakaFungsiPeran pada jalur ini
NumPyArray numerik dan operasi tervektorisasiFondasi perhitungan di balik pandas
pandasTabel data (DataFrame) dan operasinyaPembersihan, agregasi, dan eksplorasi
MatplotlibGrafik tingkat rendah yang fleksibelKontrol penuh atas setiap elemen grafik
seabornGrafik statistik berbasis MatplotlibPlot distribusi dan kategorikal yang ringkas
scikit-learnMachine learning dengan antarmuka seragamBaseline, regresi, klasifikasi, evaluasi
scipyRute statistik dan optimasiUji hipotesis dan distribusi probabilitas

Keenam pustaka ini dipasang dalam satu perintah pip pada lingkungan yang sudah aktif.

bash
# tidak-dijalankan
pip install numpy pandas matplotlib seaborn scikit-learn scipy

Versi yang dipakai sepanjang penulisan jalur ini adalah pandas 2.2 dan scikit-learn 1.5. Perbedaan versi minor biasanya tidak mengubah hasil, tetapi perbedaan versi mayor kadang mengubah nama fungsi, sehingga mencantumkan versi pada setiap proyek adalah kebiasaan yang disiplin.

Jupyter sebagai wadah kerja#

Jupyter menyediakan notebook, yaitu dokumen yang memadukan kode, keluaran, dan catatan prosa dalam satu berkas yang dijalankan per sel. Alur kerjanya cocok untuk eksplorasi karena setiap hasil segera terlihat, dan keadaan variabelnya tetap hidup antar sel.

Pemasangan dan pembukaannya memakai dua perintah berikut.

bash
# tidak-dijalankan
pip install jupyterlab
jupyter lab

Kelebihan notebook adalah jembatan yang baik antara kode dan narasi, sehingga cocok untuk eksplorasi dan komunikasi awal. Kelemahannya adalah urutan eksekusi sel yang sering tidak linear, sehingga notebook yang acak urutan jalannya sulit direproduksi orang lain. Karena itu jalur ini menempatkan notebook pada eksplorasi, sedangkan pekerjaan yang sudah mapan dipindahkan ke skrip Python biasa, sebagaimana dibahas pada modul reproduktibilitas.

Memverifikasi hasil pemasangan#

Cara termudah memeriksa pemasangan adalah mencetak versi setiap pustaka. Berkas periksa_lingkungan.py melakukan itu dengan satu perulangan, dan keluarannya sekaligus menjadi bukti bahwa lingkungan siap dipakai.

python periksa_lingkungan.py
"""Pemeriksaan cepat lingkungan data science.

Menampilkan versi pustaka inti yang dipakai sepanjang jalur ini.
Jalankan dengan: python3 periksa_lingkungan.py
"""
from importlib.metadata import version

pustaka = [
    "numpy",
    "pandas",
    "matplotlib",
    "seaborn",
    "scikit-learn",
    "scipy",
]

for nama in pustaka:
    print(f"{nama:14} {version(nama)}")
text Keluaran
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

Fungsi version dari importlib.metadata membaca metadata paket yang terpasang pada lingkungan aktif, sehingga keluarannya selalu mencerminkan kondisi sesungguhnya. Apabila satu baris gagal dengan error PackageNotFound, pustaka tersebut belum terpasang pada lingkungan yang sedang aktif, dan pemeriksaan ini menangkapnya sebelum pekerjaan analisis dimulai.

Mengunci versi dalam requirements.txt#

Lingkungan yang berjalan di satu komputer belum berarti lingkungan yang dapat dibangun ulang di komputer lain. Jembatannya adalah requirements.txt, yaitu daftar paket beserta versinya yang dihasilkan dari keadaan lingkungan saat ini.

bash
# tidak-dijalankan
pip freeze > requirements.txt
pip install -r requirements.txt

Perintah pertama mencatat, sedangkan perintah kedua membangun ulang pada mesin atau lingkungan baru. Dua berkas yang dihasilkan proyek pada jalur ini diatur persis dengan pola tersebut pada modul reproduktibilitas, dan kebiasaan ini sejak awal membuat setiap hasil analisis dapat dipertanggungjawabkan versinya.

Kesalahan umum#

Kesalahan pertama adalah memasang semua paket pada lingkungan dasar yang sama untuk semua proyek. Tabrakan versi antar proyek kemudian sulit dilacak karena tidak ada yang tahu lingkungan mana yang dipakai proyek tertentu, sedangkan satu lingkungan maya per proyek membuat pertanyaan itu tidak pernah muncul.

Kesalahan kedua adalah mencatat versi secara ingatan alih-alih melalui pip freeze. Daftar yang ditulis tangan hampir pasti kurang lengkap karena paket kecil yang dibawa bergantungannya tidak tercantum, sedangkan hasil pip freeze merekam seluruh pohon dependensi.

Kesalahan ketiga adalah membiarkan notebook berjalan dengan urutan sel yang acak. Analisis yang hasilnya bergantung pada urutan eksekusi terdahulu akan menghasilkan angka berbeda setiap dijalankan ulang. Kebiasaan penangkalnya sederhana, yaitu menjalankan ulang seluruh notebook dari atas sebelum hasil diserahkan.

Ringkasan#

  • Lingkungan maya per proyek mengisolasi pustaka proyek dari Python milik sistem dan dari proyek lain.
  • Enam pustaka inti, yaitu NumPy, pandas, Matplotlib, seaborn, scikit-learn, dan scipy, menopang seluruh jalur ini.
  • Jupyter cocok untuk eksplorasi, sedangkan pekerjaan mapan dipindahkan ke skrip agar reproduktif.
  • pip freeze dan requirements.txt membuat lingkungan dapat dibangun ulang oleh siapa pun dengan versi yang sama.

Referensi#