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.

KomponenBentukTugas
Antarmuka webHalaman JupyterLab di perambanMenyunting cell, menampilkan output dan grafik
Server JupyterProses di terminal tempat kita mengetik jupyter labMelayani berkas .ipynb, mengatur sesi dan keamanan
Kernel (IPython)Proses Python terpisahMenjalankan 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:

bash
pip install notebook jupyterlab

Setelah terpasang, jalankan server JupyterLab dari folder proyek:

bash
jupyter lab

Output yang Dihasilkan (potongan; angka port dan token akan berbeda):

text
[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=8f31c2a9d4e7b105

Peramban biasanya terbuka otomatis; bila tidak, salin salah satu URL tersebut ke address bar. Mari kita bedah anatomi URL itu:

  1. http://localhost:8888: alamat server di komputer kita sendiri (localhost) pada port 8888 — port bawaan Jupyter.
  2. /lab: halaman yang diminta, yaitu antarmuka JupyterLab.
  3. ?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:

json
{
  "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:

  1. cells: daftar cell pembentuk notebook. Field cell_type membedakan cell kode (code) dari cell narasi (markdown).
  2. source: isi cell, disimpan sebagai daftar string — satu string per baris.
  3. execution_count dan outputs: nomor urut eksekusi serta hasil keluaran yang tersimpan permanen di dalam berkas.
  4. 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:

SituasiPilihan yang tepatAlasan
Eksplorasi data dan eksperimen awalNotebookIterasi cepat: ubah satu cell, jalankan, lihat hasilnya
Analisis yang perlu diceritakan (laporan, portofolio)NotebookNarasi markdown, kode, dan grafik berada dalam satu alur
Kode yang dipakai berulang di banyak notebookSkrip .pyCukup ditulis sekali, lalu diimpor seperti module biasa
Otomatisasi terjadwal dan tugas produksiSkrip .pyDijalankan tanpa peramban oleh scheduler atau server
Pengujian otomatisSkrip .pyAlat 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:

python
# --- 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:

text
Kafe: Toko Kopi Kita
Jumlah menu: 3

Cell 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 #

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 dengan jupyter lab, lalu akses melalui URL berisi port dan token keamanan.
  • Berkas .ipynb adalah JSON berisi daftar cell (source), nomor eksekusi, output yang tersimpan, dan metadata format.
  • Notebook unggul untuk eksplorasi dan analisis bernarasi; skrip .py unggul 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.