Pengenalan dan Panduan Jupyter Notebook untuk Pemula

Pengenalan dan Panduan Jupyter Notebook untuk Pemula

Jupyter notebook adalah software sangat sangat populer beberapa tahun terakhir. Mungkin sebagian besar dari pembaca sudah menggunakannya sehari-hari. Tapi mungkin ada beberapa yang baru mengenal nama saja dan belum terlalu mengerti. Atau bahkan mungkin baru mendengar. Jangan kuatir, tulisan ini akan mengenalkan Anda kepada Jupyter notebook dari nol sampai sedikit menguasainya.

Apakah Jupyter Notebook dan Kenapa Dia Begitu Populer

Jupyter (https://jupyter.org/) adalah organisasi non-profit untuk mengembangkan software interaktif dalam berbagai bahasa pemrograman. Notebook adalah satu software buatan Jupyter, adalah aplikasi web open-source yang memungkinkan Anda membuat dan berbagi dokumen interaktif yang berisi kode live, persamaan, visualisasi, dan teks naratif yang kaya.

Mungkin penjelasan di atas kurang jelas. Ilustrasinya begini. Dulu, biasanya kita membagikan kode dan dokumen secara terpisah. Kode-kode kita satukan dalam sebuah librari/aplikasi/proyek (Visual Studio, Eclipse, dsb), dan dokumen kita buat dengan penyunting kata. Dalam dokumen bisa tampilkan cuplikan kode, tampilan hasil, dan visualisasi lainnya dari program kita.

Nah Jupyter Notebook menyatukan semua ini, baik itu teks/narasi, kode hidup, persamaan, tampilan hasil, gambar statis, dan visualisasi grafis, dalam satu file interaktif. Dan, kelebihan lainnya, notebook dapat dijalankan ulang oleh siapapun yang membukanya, untuk mereproduksi eksekusi kode di dalamnya.

Contohnya adalah dokumen ini sendiri. Dokumen ini aslinya adalah sebuah Jupyter Notebook. Mungkin Anda membacanya di blog IndoML, karena notebook ini telah dikonversi menjadi blog WordPress dengan menggunakan utilitas nb2wp. Anda bisa melihat file aslinya di GitHub, dan akan tampak keluaran yang sama.

Nah keistimewaan dari dokumen ini adalah kemampuannya membawa kode hidup (live code). Seperti di bawah ini.

In [1]:
import datetime
import matplotlib.pyplot as plt

now = datetime.datetime.now()
print('Halo teman. Waktu sekarang adalah {}'.format(now))
Halo teman. Waktu sekarang adalah 2019-09-25 16:56:28.841249

Kode di atas bukan sekedar cuplikan tulisan kode di dokumentasi, tapi adalah kode hidup. Kalau Anda melihat tulisan ini di blog IndoML atau di GitHub, memang yang Anda lihat adalah tampilan statis dari eksekusi terakhir ketika notebook ini disimpan. Ibaratnya Anda sedang melihat sebuah dokumen. Tampilannya tidak akan berubah. Tapi kalau Anda menjalankan file notebook ini di instalasi Jupyter Anda, maka Anda bisa menjalankan kode di atas dan nanti akan keluar tampilan waktu yang berbeda tentunya!

Jenis keluaran kode yang didukung juga tidak sebatas teks sederhana seperti di atas. Bisa juga grafik seperti ini:

In [2]:
import numpy as np

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6))
fig.suptitle('Contoh Beberapa Grafis Acak')
rng = np.random.RandomState(0)
x = rng.randn(100)
y = rng.randn(100)
colors = rng.rand(100)
sizes = 1000 * rng.rand(100)

ax1.scatter(x, y, c=colors, s=sizes, alpha=0.3, cmap='viridis')
ax1.set_xlabel('Sumbu X')
ax1.set_ylabel('Sumbu Y')

x = np.linspace(0, 10, 30)
y = np.sin(x)
ax2.plot(x, y, '-ok')
ax2.set_xlabel('Sumbu X')
ax2.set_ylabel('Sumbu Y')

fig.tight_layout(rect=[0, 0.03, 1, 0.97])
plt.show()

Bisa juga menampilkan tabel/DataFrame pandas misalnya seperti ini:

In [3]:
import pandas as pd

df = pd.DataFrame({
        'nama':['joni','meri','peter','japri','budi','lisa'],
        'umur':[23,78,22,19,12,33],
        'propinsi':['Sumatera Selatan','Jatim','DKI','Bali','Papua','NTT']
     })
df
Out[3]:
nama propinsi umur
0 joni Sumatera Selatan 23
1 meri Jatim 78
2 peter DKI 22
3 japri Bali 19
4 budi Papua 12
5 lisa NTT 33

Banyak jenis-jenis media lain yang bisa ditampilkan secara hidup, misalnya Markdown, HTML, audio, video, Javascript, dan sebagainya.

Dengan begitu kayanya interativitas yang disediakan Jupyter notebook, maka Anda bisa melihat potensi penggunaannya, terutama untuk riset dan kolaborasi. Saya sendiri sering sekali menemukan penggunaan Jupyter notebook, misalnya di kursus-kursus online (MOOC) sebagai platform bagi murid untuk melakukan pemrograman, di Kaggle, dan banyak periset-periset yang membagikan karyanya dalam bentuk notebook.

Apakah Jupyter Notebook Hanya Untuk Python?

Tidak. Walaupun Jupyter notebook ditulis dalam bahasa Python, namun kemampuan untuk mendukung suatu bahasa pemrograman di dalam notebook diimplementasikan secara modular dalam bentuk kernel. Saat ini ada lebih dari 130 kernel yang mendukung hampir 100 bahasa pemrograman misalnya:

  • bash,
  • C,
  • C++,
  • C#,
  • Clojure,
  • Common LISP,
  • Erlang,
  • F#,
  • Go,
  • J,
  • Java,
  • Julia,
  • livescript,
  • Lua,
  • Matlab,
  • NodeJS,
  • Perl,
  • PHP,
  • Prolog,
  • Python,
  • Q,
  • R,
  • Ruby,
  • Scala,
  • SQL,
  • Tcl, dan
  • Zsh.

Untuk daftar lengkapnya silakan lihat laman Jupyter Kernels.

Nah sekarang mudah-mudahan Anda semakin tertarik untuk mencoba Jupyter notebook. Mari kita install.

Petunjuk Instalasi Jupyter Notebook

Sebelumnya, semestinya Anda harus mempunyai instalasi Python. Kalau belum, maka Anda perlu menginstalasinya terlebih dahulu dari https://www.python.org/downloads/. Pilih Python versi 3 terakhir.

Ada beberapa cara untuk menginstall Jupyter, tapi menurut saya yang paling praktis adalah menggunakan pip. Cukup jalankan perintah ini di Terminal (Mac/Linux) atau Command Prompt (Windows):

pip3 install jupyter

Alternatifnya, kalau Anda mengalami kesulitan menginstall dengan cara di atas, mungkin bisa dicoba cara ini:

python3 -m pip install --upgrade pip
python3 -m pip install jupyter

Setelah terinstall, maka siap dijalankan.

Menjalankan Jupyter Notebook

Untuk menjalankan Jupyter Notebook, jalankan perintah di bawah ini di Terminal (Mac/Linux) atau Command Prompt (Windows) dari direktori yang menaungi semua direktori proyek-proyek Anda (misalnya Anda mempunyai dua proyek yaitu di C:\project\project1 dan C:\project\project2, maka jalankan dari direktori C:\project agar Anda bisa mengakses kedua proyek tersebut dari Jupyter).

jupyter notebook

Setelah beberapa saat, jupyter akan membuka laman http://localhost:8888/ yang merupakan laman depan dari instalasi Jupyter notebook Anda (disebut laman Notebook Dashboard).

Notebook Dashboard

Laman ini menampilkan semua direktori dan file yang ada di direktori di mana Jupyter dijalankan. Di tempat saya tampilannya seperti ini:

Notebook Dashboard

Sekarang kita siap membuat notebook baru.

Membuat Notebook Baru

Klik tombol New, lalu pilih Python 3 seperti pada gambar di bawah ini:

New Notebook

Sebuah tab (atau window) baru akan muncul di browser Anda, berisi notebook baru yang kosong. Setelah beberapa saat (tunggu sampai tulisan “Starting” di judul tab hilang), kita siap menyunting notebook tersebut.

Menyunting Notebook

Mari kita kenali bagian-bagian utama dari tampilan notebook.

Gambar 020

Judul

Yang pertama harus Anda sunting adalah judul. Masukkan judul dengan mengklik tulisan Untitled di atas. Harap diperhatikan bahwa judul ini akan menjadi nama file notebooknya juga.

Sel dan Jenis Sel

Setelah itu, bagian penting yang Anda harus ketahui adalah sel (Inggris: cell) (lihat gambar di atas). Sel adalah tempat Anda menuliskan karya Anda, baik berupa narasi ataupun kode. Nantinya notebook akan berisi banyak sel. Saat ini notebook hanya mempunyai satu sel. Jenis sel Anda pilih dengan memilih pada dropdown jenis sel seperti yang ditunjukkan pada gambar. Pada awalnya, jenis sel adalah kode.

Untuk sel pertama, sebaiknya kita isi dengan narasi awal tentang karya kita, misalnya judul, pendahuluan, dsb. Ikuti petunjuk berikut.

Menulis Narasi dengan Markdown

Untuk menulis narasi, gantilah jenis sel menjadi Markdown dari pilihan dropdown jenis cell di atas. Lalu tulislah judul dan narasi awal untuk karya Anda, misalnya seperti ini:

040

Sintaks Markdown akan dijelaskan di bawah, tapi kalau Anda sekarang penasaran Anda bisa melihat detilnya di laman Markdown cheatsheet.

Ketika kita menyunting sel seperti ini, maka sel disebut sedang dalam mode edit. Perhatikan garis kotak hijau yang mengelilingi sel. Pada mode ini, untuk sel Markdown kode sumber Markdownnya akan ditampilkan.

Untuk menampilkan hasil tulisan Markdown kita itu, sel harus dijalankan.

Menjalankan Sel

Untuk melihat tampilan sebuah sel, maka sel itu harus kita jalankan, dengan salah satu cara berikut (kalau selnya masih belum mendapatkan fokus, maka kliklah sekali agar dia fokus):

Cara Menjalankan dari Menu Kunci Pintas Keterangan
Menu Cell –> Run Cells Ctrl+Enter
(atau Cmd+Enter untuk Mac)
Menjalankan sel
Menu Cell –> Run Cells and Select Below Shift+Enter Menjalankan sel lalu memindahkan fokus ke sel berikutnya
Menu Cell –> Run Cells and Insert Below Alt+Enter
(atau Option+Enter untuk Mac)
Menjalankan sel lalu membuat sel baru di bawahnya

Menjalankan sel mempunyai makna yang berbeda tergantung jenis selnya. Untuk jenis sel Markdown, maka ini akan merubah kode Markdown itu menjadi tampilan yang diharapkan (dirender). Untuk jenis sel kode, maka kodenya akan dijalankan oleh kernel, perubahan state akan disimpan oleh kernel, dan hasilnya ditampilkan di notebook.

Sebagai tambahan informasi, ada cara untuk menjalankan semua sel yang bisa Anda lihat di menu Cell:

  • Run All
  • Run All Above
  • Run All Below

Menjalankan Sel Markdown

Mari kita eksekusi sel Markdown kita di atas, dan hasilnya akan seperti ini:

Gambar 045

Setelah sel dieksekusi, maka sel disebut ada dalam mode command. Perhatikan garis kotak biru yang mengelilingi sel.

Menyunting Kembali

Ketika sel dalam mode command, untuk menyunting kembali di mode edit Anda bisa mengklik ganda sel itu atau mengklik sekali untuk menjadikan sel itu fokus lalu menekan Enter.

Selanjutnya mari kita membuat sel baru bertipe kode. Tambahkan sel baru dengan memilih menu Insert –> Insert Cell Below, atau dengan menekan tombol + dari toolbar. Secara default, jenis sel baru adalah kode jadi kita tidak perlu merubah jenisnya.

Menulis dan Menjalankan Kode

Mari kita sunting sel kode seperti di bawah ini:

Gambar 050

Perhatikan juga bahwa untuk jenis sel kode, ada braket kotak di sebelah kiri sel, bertuliskan “In [ ]:“. Braket kotak ini nanti akan diisi angka urutan eksekusi setelah selnya dieksekusi.

Mari kita jalankan. Hasilnya akan seperti ini:

Gmabar 055

Yeyy.. kodenya dijalankan. Perhatikan braket kotaknya sekarang terisi nomor urutan eksekusi (“In [1]:“). Nomor ini berguna karena urutan eksekusi tidak harus sama dengan urutan sel dalam notebook. Misalnya Anda punya lima sel, katakanlah sel 1 2 3 4 5, maka bisa saja Anda mengeksekusinya dengan urutan 1 4 2 5 3. Hal ini mungkin terdengar aneh sekarang. Tapi pada prakteknya ini merupakan hal yang sangat biasa Anda lakukan nantinya. Seperti kalau kita menyunting dokumen atau kode, maka sering kita menyunting bagian-bagian secara melompat-lompat. Makanya nomor urutan eksekusi ini sangat berguna untuk diperhatikan.

Lingkup (Scope) Variabel

Variabel-variabel dan fungsi-fungsi yang Anda deklarasikan di sel akan mempunyai lingkup global, dan bisa diakses dari sel lainnya. Misalnya, mari kita membuat sel baru yang mengakses variabel msg yang kita deklarasikan di sel kedua tadi (ingat, sel pertama kita adalah Markdown):

Gambar 060

Anda bisa mengakses variabel global yang didefinisikan di sel lain, asalkan sel tempat variabel tersebut didefinisikan telah dieksekusi sebelumnya. Cara melihatnya adalah dengan melihat nomor eksekusi dalam braket kotak di sebelah kiri sel itu. Karena nomor eksekusinya lebih kecil dari nomor sekarang (nomor eksekusi sel itu 1, dan nomor sekarang 2), dan kernelnya sama, maka berarti sel tersebut telah tereksekusi sebelumnya.

Membuat Narasi yang Lebih Kaya dengan Markdown

Dengan Markdown kita bisa membuat teks narasi yang cukup kaya. Semua fitur-fitur dasar yang dibutuhkan dalam penyuntingan teks didukung oleh Markdown, misalnya heading/judul, mulai heading 1 sampai heading 6, tipografi (huruf tebal, miring, huruf tetap, tebal miring, tercoret, dsb.), list:

  • item 1
  • item 2
    • item 2a
    • item 2b
  • item 3

List bernomor:

  1. item 1
  2. item 2
    1. item 2a
    2. item 2b
  3. item 3

Dan juga tautan, gambar, tabel, kode, video, dan sebagainya. Banyak fitur-fitur ini yang sudah Anda lihat sendiri dalam notebook yang sedang Anda baca ini! Kalau dibutuhkan fitur yang belum ada, bisa kita tuliskan dengan markup HTML.

Referensi lengkap dari Markdown dapat Anda lihat di laman Markdown Cheatsheet.

Harap dibedakan kode yang merupakan bagian dari narasi (di dalam sel Markdown), dengan kode hidup yang ada di dalam sel kode. Cuplikan kode dalam sel Markdown juga diwarnai sesuai sintaks (syntax coloring), sehingga terlihat bagus seperti pada cuplikan berikut:

def katakan(berita):
    """Fungsi untuk mengatakan berita"""
    print(berita)

Jangan salah, cuplikan kode di atas hanyalah berupa teks Markdown dan tidak dapat dieksekusi, karena bukan dalam sel kode.

Cuplikan kode di atas ditulis dengan membungkus kodenya dengan tiga backtick (```), lalu tuliskan bahasa pemrograman yang diinginkan untuk mengaktifkan pewarnaan sintaks, seperti ini:

```python
def katakan(berita):
    """Fungsi untuk mengatakan berita"""
    print(berita)
```

Persamaan Latex

Markdown mendukung Latex untuk menampilkan ekspresi matematika, yang bisa ditampilkan dalam baris yang sama misalnya: e^{i\pi} + 1 = 0  atau dalam baris tersendiri:

e^x=\sum_{i=0}^\infty \frac{1}{i!}x^i

Menyimpan dan Membuka Notebook

Menyimpan Notebook

Untuk menyimpan notebook, Anda bisa melakukan salah satu di bawah ini:

  • tekan kunci Ctrl+S (atau Cmd+S di Mac)
  • pilih dari menu File –> Save and Checkpoint
  • tekan tombol disket dari toolbar

Menutup Notebook

Untuk menutup notebook, pilih dari menu File –> Close and Halt.

Kadang-kadang window/tab browser tidak tertutup setelah Anda melakukan itu. Anda bisa menutup tab/window browser secara manual.

Membuka Kembali Notebook

Anda bisa membuka notebook dari Notebook Dashboard dengan mengklik notebooknya:

Gambar 070

Latihan

Sekarang karena Anda sudah mengerti operasi-operasi dasar notebook, mari kita berlatih. Caranya adalah dengan mengunduh contoh-contoh notebook berikut ini ke direktori di mana jupyter anda jalankan, lalu buka notebooknya dari Notebook Dashboard. Silakan Anda oprek-oprek notebook itu, lalu kembali ke sini.

Membagikan Notebook

Kini saatnya untuk membagikan karya gemilang notebook Anda pada orang-orang! Ada banyak cara untuk membagikan notebook.

Secara Statis dengan Export File

Anda bisa membagikan notebook Anda sebagai file PDF, HTML, Latex, Rst, atau Markdown dengan cara memilih menu File –> Download as. Cara ini cocok kalau kalau penerimanya kurang mengerti teknis, misalnya bos Anda hehe.

Secara Statis/Dinamis dengan GitHub/GitLab

Github dan Gitlab Kalau pekerjaan Anda tersimpan di GitHub atau GitLab, maka Anda cukup bagikan link ke file notebook di GitHub/GitLab itu. Sebagai contoh Anda bisa melihat file notebook ini di tautan ini. Penerima bisa melihat tampilan dari notebook Anda dari situ, atau mengunduhnya dan menjalankannya sendiri di komputernya.

Menurut saya cara ini adalah cara yang paling praktis untuk membagikan notebook ke kolega Anda.

Secara Dinamis dengan Google Colab

Google Colab (https://colab.research.google.com) adalah layanan gratis untuk kolaborasi Jupyter notebook. Seperti Google Doc dipakai untuk berkolaborasi dalam penyuntingan dokumen, Google Colab dipakai untuk berkolaborasi dalam penyuntingan Jupyter notebook.

Colab juga menyediakan fitur eksekusi di GPU (gratis) bagi notebook Anda, sehingga sangat berguna untuk melatih model pembelajaran mesin Anda.

Colab bisa membuka notebook Anda dari GitHub, tapi kalau notebook Anda membutuhkan file lain (misalnya file gambar, atau file Python yang diimport oleh notebook Anda) maka mungkin harus ada langkah-langkah lain yang harus Anda lakukan (saya belum terlalu mencoba).

Secara Statis dengan Nbviewer

Nbviewer (https://nbviewer.jupyter.org/) adalah layanan untuk melihat notebook secara statis. Kalau notebook Anda dapat terakses dengan sebuah URL, maka cukup berikan URLnya ke Nbviewer untuk melihatnya. Sebagai contoh, Anda bisa melihat notebook ini di nbviewer di tautan ini.

Cara ini tidak banyak berbeda dengan melihat notebook dengan GitHub/GitLab. Tapi GitHub kadang bermasalah dalam menampilkan notebook, jadi cara ini bisa menjadi alternatif.

Bagikan File Notebook Beserta Kebutuhannya

Anda juga bisa bagikan saja file notebooknya kepada kolega Anda. Jika Anda ingin kolega Anda bisa menjalankan notebook itu, jangan lupa untuk mengikutsertakan file-file yang dibutuhkan notebook itu (misalnya file gambar, atau file Python yang diimport oleh notebook Anda). Tapi kalau kolega Anda hanya ingin melihat tampilannya, maka cukup dibagikan notebooknya saja.

Cara ini hanya efektif kalau notebook Anda tidak tergantung pada file-file lain.

Tampilkan di WordPress dengan Utilitas nb2wp

Kalau blog Anda di WordPress, cara yang paling tepat untuk mempublikasikan notebook Anda menurut saya adalah dengan mengkonversinya ke HTML sederhana dengan utilitas nb2wp. Silakan Anda baca tautan nb2wp untuk informasi lebih lanjut.

WordPress.com (bedakan dengan self-hosted WordPress) memberikan banyak keterbatasan dalam penyuntingan blog, misalnya tidak bisa menginstall plugin, tidak bisa mengeksekusi skrip dari postingan, tidak bisa memakai CSS, dan tidak memperbolehkan data: URI. Utilitas nb2wp menghasilkan HTML yang mengatasi keterbatasan-keterbatasan ini.

Kalau Anda membaca ini di IndoML, maka tulisan ini dibuat dengan nb2wp.

Tampilkan Hasil Export HTML di Web

Unggah file HTML dari hasil export notebook ke web atau blog Anda. Kalau Anda membutuhkan kustomisasi, Anda bisa edit file HTML-nya, atau rubah template nbconvert (agak panjang ceritanya).

Cara ini lumayan, tapi membutuhkan layanan web atau blog yang memungkinkan Anda mengunggah file HTML secara utuh. WordPress.com, misalnya, tidak memperbolehkan ini.

Tampilkan Cuplikan di Web/Blog

Cara lain yang mudah adalah meng-embded Gist di laman postingan blog. Caranya:

  1. Buka file notebook (yang berekstensi .ipynb) di teks editor
  2. Select All –> Copy
  3. Buat Gist baru di https://gist.github.com/
  4. Paste isi notebook tadi di gist baru ini
  5. Beri nama file gist dengan ekstensi .ipynb agar gist ini ditampilkan sebagai Jupyter notebook
  6. Embed-kan URL gist ini di web atau blog Anda. WordPress mempunyai fasilitas ini, dan semestinya penyedia layanan blog lainnya juga (saya belum mencoba yang lain sih).

Dengan cara ini, notebook akan tampil dalam sebuah iframe kecil yang bisa di-scroll.

Cara ini mungkin cocok kalau Anda berniat untuk membuat narasi tersendiri di blog Anda, dan hanya ingin mereferensi notebook Anda.

Kelebihan cara ini adalah mudah, sedangkan kekurangannya menurut saya:

  • Anda harus membuat narasi lagi di postingan blog
  • notebook hanya tampil dalam iframe kecil yang lebih sulit dilihat
  • mengkopi-paste notebook ke gist sangat tidak praktis

Belajar dari Contoh Hebat

Berikut adalah contoh-contoh notebook bisa Anda pelajari:

Penutup

Sebenarnya masih banyak aspek-aspek dan fitur-fitur Jupyter notebook yang menarik untuk dibahas, namun tulisan ini rasanya sudah cukup panjang.

Mudah-mudahan artikel ini menginspirasi Anda untuk menggunakan Jupyter notebook. Kalau Anda ada pertanyaan atau membutuhkan bantuan, silakan komentari di blog IndoML.

(Bagian Ini Khusus buat Saya)

Bagian ini saya pergunakan untuk secara otomatis mengkonversi notebook ini menjadi HTML untuk diunggah ke WordPress.

In [4]:
%load_ext autoreload
%autoreload 2
In [8]:
import sys
sys.path.insert(0,'../../../nb2wp')
from nb2wp import nb2wp

img_prefix = 'https://raw.githubusercontent.com/' + \
             'stosia/indoml/master/notebooks/' + \
             '00-pengenalan-jupyter/html/img'

nb2wp('pengenalan-jupyter-01.ipynb', 
      css_file='../../../nb2wp/style.css',
      out_dir='html', 
      img_url_prefix=img_prefix)
Using template: full
Using CSS file ../../../nb2wp/style.css
html\pengenalan-jupyter-01.html: 196933 bytes written in 35.541s

WordPress conversion from pengenalan-jupyter-01.ipynb by nb2wp v0.2

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google

You are commenting using your Google account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

Blog di WordPress.com.

Atas ↑

%d blogger menyukai ini: