Pekerjaan data science bersifat bolak-balik: kita memuat data, mengintip isinya, membuat grafik, mengajukan pertanyaan baru, lalu kembali mengolah data lagi. Menulis seluruh langkah tersebut sebagai satu skrip panjang lalu menjalankannya dari atas ke bawah terasa kaku untuk pola kerja seperti ini — kita butuh ruang kerja yang merespons di tempat. Jupyter Notebook adalah ruang kerja tersebut: kode, hasil keluaran, grafik, dan catatan narasi hidup dalam satu dokumen interaktif di peramban. Pada chapter ini kita memasang Jupyter, menjalankannya, membedah arsitektur di baliknya, dan membuka isi berkas .ipynb untuk melihat bahwa notebook sebenarnya hanyalah JSON.
Apa Itu Jupyter: Kernel dan Antarmuka Web #
Jupyter bukan satu program tunggal, melainkan gabungan dua komponen yang bekerja terpisah. Komponen pertama adalah kernel — proses Python yang berjalan di latar belakang, mengeksekusi kode, menyimpan isi variabel di memori, dan mengembalikan hasil ke kita. Komponen kedua adalah antarmuka web — halaman di peramban tempat kita mengetik kode, melihat output, dan menulis catatan. Di antara keduanya ada server Jupyter yang menjembatani komunikasi.
| Komponen | Bentuk | Tugas |
|---|---|---|
| Antarmuka web | Halaman JupyterLab di peramban | Menyunting cell, menampilkan output dan grafik |
| Server Jupyter | Proses di terminal tempat kita mengetik jupyter lab | Melayani berkas .ipynb, mengatur sesi dan keamanan |
| Kernel (IPython) | Proses Python terpisah | Menjalankan kode dan menyimpan keadaan variabel |
Konsekuensi pemisahan ini penting dipahami sejak awal: kernel-lah yang mengingat variabel kita, bukan halaman di peramban. Menutup tab peramban tidak menghapus variabel selama kernel masih hidup; sebaliknya, menghentikan kernel mengosongkan seluruh keadaan meski halaman tetap terbuka. Perilaku ini akan kita manfaatkan dan waspadai bergantian pada chapter berikutnya.
Memasang dan Menjalankan Jupyter #
Dua paket utama yang akan kita pakai: notebook (antarmuka klasik) dan jupyterlab (antarmuka generasi baru yang lebih lengkap). Pasang keduanya ke dalam venv yang aktif:
pip install notebook jupyterlabSetelah terpasang, jalankan server JupyterLab dari folder proyek:
jupyter labOutput yang Dihasilkan (potongan; angka port dan token akan berbeda):
[I 2026-01-15 10:12:45.312 ServerApp] jupyterlab | extension was successfully linked.
...
Or copy and paste one of these URLs:
http://localhost:8888/lab?token=8f31c2a9d4e7b105
http://127.0.0.1:8888/lab?token=8f31c2a9d4e7b105Peramban biasanya terbuka otomatis; bila tidak, salin salah satu URL tersebut ke address bar. Mari kita bedah anatomi URL itu:
http://localhost:8888: alamat server di komputer kita sendiri (localhost) pada port 8888 — port bawaan Jupyter./lab: halaman yang diminta, yaitu antarmuka JupyterLab.?token=8f31...: kunci akses sekali pakai. Server Jupyter membatasi akses dengan token acak agar orang lain — termasuk situs lain di peramban kita — tidak bisa sembarangan menjalankan kode atas nama kita.
Di dalam JupyterLab, klik ganda berkas .ipynb apa pun — atau buat lewat menu File → New → Notebook — dan pilih kernel Python 3 saat diminta. Kita kini berada di dalam sebuah notebook.
Isi Sebuah Berkas .ipynb #
Nama notebook selalu berakhiran .ipynb — singkatan dari interactive Python notebook. Di balik namanya, berkas tersebut hanyalah dokumen JSON berisi daftar cell dan metadatanya. Potongan berikut adalah kerangka paling sederhana sebuah notebook:
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"source": ["print(\"Halo dari notebook\")"],
"outputs": []
}
],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}Empat bagian tersebut mencakup hampir seluruh hal yang perlu kita pahami:
cells: daftar cell pembentuk notebook. Fieldcell_typemembedakan cell kode (code) dari cell narasi (markdown).source: isi cell, disimpan sebagai daftar string — satu string per baris.execution_countdanoutputs: nomor urut eksekusi serta hasil keluaran yang tersimpan permanen di dalam berkas.nbformat: versi format notebook, saat ini 4 — nomor yang sama di mana pun notebook dibuat.
Mengetahui isi ini bermanfaat nyata: hasil keluaran (termasuk angka dan grafik) ikut tersimpan di berkas, sehingga satu berkas .ipynb dapat dibagikan lengkap dengan bukti jalannya analisis. Konsekuensinya, berkas notebook menjadi besar dan sulit dibandingkan antar versi bila output dibiarkan menumpuk — kebiasaan menjaga kebersihannya kita bahas pada chapter berikutnya.
Notebook atau Skrip .py? #
Notebook bukan pengganti skrip .py; keduanya unggul pada medan yang berbeda. Pedoman praktisnya:
| Situasi | Pilihan yang tepat | Alasan |
|---|---|---|
| Eksplorasi data dan eksperimen awal | Notebook | Iterasi cepat: ubah satu cell, jalankan, lihat hasilnya |
| Analisis yang perlu diceritakan (laporan, portofolio) | Notebook | Narasi markdown, kode, dan grafik berada dalam satu alur |
| Kode yang dipakai berulang di banyak notebook | Skrip .py | Cukup ditulis sekali, lalu diimpor seperti module biasa |
| Otomatisasi terjadwal dan tugas produksi | Skrip .py | Dijalankan tanpa peramban oleh scheduler atau server |
| Pengujian otomatis | Skrip .py | Alat pengujian memang membaca berkas .py |
Pola kerja yang lazim di komunitas: eksplorasi di notebook, lalu begitu kode mulai stabil, pindahkan fungsi-fungsi penting ke berkas .py agar rapi dan dapat diuji. Kita akan menerapkan pola tersebut saat membahas struktur proyek pada chapter akhir Section ini.
Untuk menutup pengenalan, mari buktikan klaim bahwa kernel mengingat keadaan antar cell. Skrip berikut meniru isi dua cell yang dijalankan berurutan dalam satu sesi notebook:
# --- Isi Cell 1: membuat variabel ---
nama_kafe = "Toko Kopi Kita"
daftar_menu = ["kopi susu", "es teh", "cokelat panas"]
# --- Isi Cell 2, dijalankan setelah Cell 1 ---
print("Kafe:", nama_kafe)
print("Jumlah menu:", len(daftar_menu))Output yang Dihasilkan:
Kafe: Toko Kopi Kita
Jumlah menu: 3Cell kedua berhasil memakai nama_kafe dan daftar_menu tanpa mendeklarasikannya ulang, karena keduanya sudah ada di memori kernel sejak Cell pertama dijalankan. Bila kita merestart kernel lalu hanya menjalankan Cell kedua, muncul NameError — variabel tersebut sudah tidak ada. Perilaku inilah yang membuat urutan eksekusi menjadi penting, dan itu pokok bahasan chapter berikutnya tentang penggunaan notebook sehari-hari.
Referensi Resmi #
- Dokumentasi proyek Jupyter — arsitektur, komponen, dan istilah resmi di ekosistem Jupyter.
- Dokumentasi JupyterLab — panduan antarmuka yang kita pakai sepanjang Course.
Rangkuman #
- Jupyter terdiri atas tiga komponen: antarmuka web di peramban, server Jupyter, dan kernel Python yang mengeksekusi kode serta menyimpan keadaan.
- Pasang dengan
pip install notebook jupyterlab, jalankan denganjupyter lab, lalu akses melalui URL berisi port dan token keamanan. - Berkas
.ipynbadalah JSON berisi daftar cell (source), nomor eksekusi, output yang tersimpan, dan metadata format. - Notebook unggul untuk eksplorasi dan analisis bernarasi; skrip
.pyunggul untuk kode produksi, otomatisasi, dan pengujian. - Keadaan variabel tersimpan di kernel, bukan di halaman peramban — menutup tab tidak menghapusnya, merestart kernel menghapusnya.
Kita sudah mengenal rumahnya; saatnya berlatih tinggal di dalamnya. Chapter berikutnya membahas rutinitas harian di notebook: mode perintah dan sunting, shortcut penting, nomor eksekusi cell, serta kebiasaan menjaga analisis tetap dapat diulang dari atas ke bawah.