Apakah Jupyter Notebook? Analisis data menjadi lebih mudah

Pada satu ketika, kita semua perlu menunjukkan karya kita. Sebilangan besar kerja pengaturcaraan dikongsi sama ada sebagai kod sumber mentah atau sebagai pelaksanaan yang disusun. Kod sumber memberikan maklumat lengkap, tetapi dengan cara yang lebih "memberitahu" daripada "tunjukkan" Yang boleh dilaksanakan menunjukkan kepada kita apa yang dilakukan perisian, tetapi walaupun dihantar dengan kod sumber, sukar untuk memahami bagaimana ia berfungsi.

Bayangkan dapat melihat kod tersebut dan melaksanakannya di UI yang sama, sehingga anda dapat membuat perubahan pada kod tersebut dan melihat hasil perubahan tersebut dengan serta-merta, dalam waktu nyata? Itulah yang ditawarkan oleh Jupyter Notebook. 

Jupyter Notebook dicipta untuk mempermudah untuk menunjukkan kerja pengaturcaraan seseorang, dan membiarkan orang lain bergabung. Notebook Jupyter membolehkan anda menggabungkan kod, komen, multimedia, dan visualisasi dalam dokumen interaktif - yang disebut notebook, secara semula jadi - yang dapat dikongsi , digunakan semula, dan diusahakan semula. 

Dan kerana Jupyter Notebook berjalan melalui penyemak imbas web, buku nota itu sendiri dapat dihoskan di mesin tempatan anda atau di pelayan jauh. 

Faedah Jupyter Notebook

Asalnya dikembangkan untuk aplikasi sains data yang ditulis dalam Python, R, dan Julia, Jupyter Notebook berguna dalam semua jenis cara untuk semua jenis projek:

  • Visualisasi data.  Sebilangan besar orang mempunyai pendedahan pertama mereka ke Jupyter Notebook melalui visualisasi data, buku catatan bersama yang merangkumi rendering beberapa set data sebagai grafik. Jupyter Notebook membolehkan anda mengarang visualisasi, tetapi juga membagikannya dan membenarkan perubahan interaktif pada kod dan set data yang dikongsi.
  • Perkongsian Kod.  Perkhidmatan cloud seperti GitHub dan Pastebin menyediakan cara untuk berkongsi kod, tetapi kebanyakannya tidak interaktif. Dengan Jupyter Notebook, anda dapat melihat kod, melaksanakannya, dan menampilkan hasilnya secara langsung di penyemak imbas web anda.
  • Interaksi langsung dengan kod.  Kod Notebook Jupyter tidak statik; ia boleh diedit dan dijalankan kembali secara bertahap dalam masa nyata, dengan maklum balas yang diberikan terus di penyemak imbas. Buku nota juga dapat menyematkan kawalan pengguna (misalnya, slaid atau medan input teks) yang dapat digunakan sebagai sumber input untuk kod.
  • Mendokumentasikan contoh kod. Sekiranya anda mempunyai sekeping kod dan anda ingin menerangkan baris demi baris cara kerjanya, dengan maklum balas langsung sepanjang masa, anda boleh memasukkannya ke dalam Jupyter Notebook. Yang paling penting, kodnya akan berfungsi sepenuhnya - anda boleh menambahkan interaktiviti bersama dengan penjelasan, menunjukkan dan memberitahu pada masa yang sama.

Komponen Notebook Jupyter

Buku nota Jupyter boleh merangkumi beberapa jenis bahan, masing-masing disusun menjadi blok diskrit:

  • Teks dan HTML.  Teks biasa, atau teks yang dijelaskan dalam sintaks Markdown untuk menghasilkan HTML, dapat dimasukkan ke dalam dokumen pada bila-bila masa. Gaya CSS juga dapat disertakan sebaris atau ditambahkan ke templat yang digunakan untuk menghasilkan notebook.
  • Kod dan output. Kod dalam buku nota Jupyter Notebook biasanya kod Python, walaupun anda mungkin menambah sokongan dalam persekitaran Jupyter anda untuk bahasa lain seperti R atau Julia. Hasil kod yang dieksekusi muncul segera setelah blok kod, dan blok kod dapat dieksekusi dan dieksekusi kembali dalam urutan apa pun yang anda suka, sesering yang anda suka. 
  • Visualisasi. Grafik dan carta boleh dihasilkan dari kod, melalui modul seperti Matplotlib, Plotly, atau Bokeh. Seperti output, visualisasi ini muncul sebaris di sebelah kod yang menghasilkannya. Walau bagaimanapun, kod juga dapat dikonfigurasi untuk menulisnya ke fail luaran jika diperlukan.
  • Multimedia. Kerana Jupyter Notebook dibina berdasarkan teknologi web, ia dapat memaparkan semua jenis multimedia yang disokong dalam halaman web. Anda boleh memasukkannya ke dalam buku nota sebagai elemen HTML, atau anda boleh menghasilkannya melalui IPython.displaymodul melalui program .
  • Data. Data dapat diberikan dalam file terpisah di samping .ipynb file yang merupakan notebook Jupyter Notebook, atau dapat diimpor secara terprogram — misalnya, dengan memasukkan kode dalam buku nota untuk memuat turun data dari repositori Internet umum atau untuk mengaksesnya melalui pangkalan data sambungan.

Kes penggunaan Notebook Jupyter

Kes penggunaan yang paling biasa untuk Jupyter Notebook adalah sains data, matematik, dan projek penyelidikan lain yang melibatkan visualisasi data atau formula. Selain daripada itu, terdapat banyak kes penggunaan lain:

  • Berkongsi visualisasi, dengan atau tanpa interaktiviti.  Orang sering berkongsi hasil visualisasi data sebagai gambar statik, tetapi hanya berguna sehingga satu titik. Dengan berkongsi buku nota Jupyter, anda membenarkan khalayak sasaran anda menyelam dan bermain-main. Mereka dapat memperoleh pemahaman yang mendalam mengenai data, secara interaktif.
  • Mendokumentasikan proses dengan kod. Banyak pengaturcara yang menulis blog mengenai pengalaman pengaturcaraan mereka menulis catatan mereka dalam buku nota Jupyter. Orang lain boleh memuat turun buku nota mereka dan membuat latihan semula.
  • Dokumentasi langsung untuk perpustakaan atau modul. Sebilangan besar dokumentasi untuk modul Python adalah statik; buku nota Jupyter boleh digunakan sebagai kotak pasir interaktif untuk belajar bagaimana modul berfungsi. Mana-mana modul Python yang berjalan dengan baik di antara muka notebook (asasnya, apa sahaja yang ditulis stdoutsebagai sebahagian daripada tingkah lakunya) adalah calon yang baik untuk ini.
  • Berkongsi kod dan data secara amnya.  Yang perlu anda lakukan untuk berkongsi buku nota Jupyter dan fail data yang berkaitan adalah memasangnya ke dalam arkib.

JupyterLab

Antaramuka pengguna generasi seterusnya untuk Jupyter Notebook, yang disebut JupyterLab, kini tersedia dan dianggap siap untuk penggunaan produksi.

Seperti yang dijelaskan dalam catatan blog yang mengumumkan ketersediaan umum, JupyterLab lebih mudah dibentuk daripada Jupyter Notebook konvensional, yang membolehkan pengguna menyeret dan melepaskan sel di dalam dan di antara buku nota dan mengatur ruang kerja ke dalam tab dan subseksyen yang berasingan. Kod dapat dijalankan secara langsung dari fail teks dan juga fail Notebook Jupyter, dan banyak format fail biasa untuk kedua-dua kod dan data dapat diberikan dengan pratonton langsung.

JupyterLab juga dapat disesuaikan dengan peluasan untuk menambahkan sokongan untuk format fail baru, untuk memperkaya antara muka, atau untuk menyediakan sejumlah fitur tambahan lain, yang memungkinkan rangkaian aplikasi notebook yang jauh lebih luas daripada Jupyter Notebook. Rancangan jangka panjang adalah untuk menggantikan antara muka Jupyter Notebook semasa dengan JupyterLab, tetapi hanya setelah JupyterLab terbukti cukup stabil dan boleh dipercayai.

Batasan Notebook Jupyter

Sekuat dan berguna seperti Jupyter Notebook, ia mempunyai beberapa batasan yang perlu diambil kira.

  • Buku nota tidak lengkap. Ini adalah satu-satunya kelemahan terbesar menggunakan Jupyter Notebook: Notebook memerlukan Jupyter runtime, bersama dengan perpustakaan yang anda rancangkan untuk digunakan. Terdapat beberapa strategi untuk membuat Notebook Jupyter yang serba lengkap, tetapi tidak ada yang disokong secara rasmi. Sebaiknya anda mengedarkan buku nota kepada orang yang sudah memiliki infrastruktur untuk menjalankannya, atau tidak keberatan penyediaannya (contohnya Anaconda).
  • Keadaan sesi tidak dapat disimpan dengan mudah.  Keadaan mana-mana kod yang berjalan di notebook Jupyter tidak dapat dipelihara dan dipulihkan dengan set alat lalai Jupyter Notebook. Setiap kali memuatkan buku nota, anda perlu menjalankan semula kod di dalamnya untuk memulihkan keadaannya.
  • Tiada penyahpepijatan interaktif atau ciri IDE lain.  Jupyter Notebook bukan persekitaran pembangunan yang sepenuhnya untuk Python. Sebilangan besar ciri yang anda harapkan dapat dijumpai dalam IDE - contohnya, debug interaktif, penyelesaian kod, dan pengurusan modul - tidak terdapat di sana.