文章目錄
開始介紹及使用 Jupyter Notebook 之前,我們先分幾個面向來說明 Jupiter 的來源,再進入介紹 Jupyter Notebook 相信讀者會更清楚整個發展及使用方向。
首先, Jupyter Notebook 是 Jupyter 專案中的一個產品,而 Jupyter 專案是一個非營利性的開源專案。於 2014 年從 IPython 專案中誕生,其存在主要是為了可跨多種程式語言的互動式計算,所開發的開源軟體、開放標準及服務,而 Jupyter 專案中還有其他產品如下:
1. Jupyter Notebook 介紹
在開始介紹 Jupyter Notebook 之前,先說明一下 IPython、Notebook、Jupyter 這幾個名詞及之間的相互關係:
- Notebook:是將基於控制台的方式 (Console-based) ,延伸到一個可互動式計算的新方向,並且提供一個基於網頁式 (Web-based) 的方式來處理整個計算過程,包括開發、編輯、文件化及執行程式,並且可立即傳遞結果。
- IPython:則是一個提供互動式運算架構的系統,具有強大的交互式 shell 及數據運算視覺化的特點,可方便且彈性的整合不同編輯器,擁有高效能及容易使用的平行運算功能,同時也是 Jupyter Notebook 其中的一個核心 (kernel)。
- Jupyter:如前面所提,它是一個從 IPython 發展演變而來的專案,後來持續發展成多語言,不再只支援 Python。Jupyter 這個名字主要是由 Julia、Python 及 R 所構成,當然除了 Julia、Python 及 R 之外,還有提供許多的 kernels (例如 Java、C#、Go、Ruby、JavaScript 等超過50多種 Jupyter kernels)。
1.1 什麼是 Jupyter Notebook
Jupyter Notebook 是一個互動式計算環境,讓使用者能夠創作筆記本文檔,其中包括:即時編碼 、互動小工具、繪圖、敘述文本、方程式、圖像及視訊。
這些文檔提供了完整的計算記錄,可以轉換為各種格式與他人共享(如電子郵件、Dropbox、版本控制系統(git/ GitHub)或 nbviewer.jupyter.org。
1.2 Jupyter Notebook 架構
Jupyter 是由 Notebook Frontend、 Jupyter Server 及 Kernel Protocol 這三部分所建立(可參考下圖官方資料),下圖中您可以看到其基本運作過程。
1.3 Jupyter Notebook 三大組成
Jupyter Notebook 您可以把它想像成是上述所講的 IPython + Notebook 整合架構,它是一個介於編輯器(例如 Atom )及 IDE (Spider、PyCharm、Vim) 之間的應用環境,可讓您編寫程式時利用其直譯式的特性,達到高互動執行結果,並且很容易呈現資料視覺化的執行。Jupyter Notebook 包含了三個主要組成: 網頁應用程序(Web Application)、核心(Kernels) 和筆記本文件檔(Notebook Documents)。
- 網頁應用程序 (Web Application):基於瀏覽器 (Web-based) 的互動創作及應用工具,包括可以計算、數學、文檔創作及豐富的多媒體輸出。
- 核心 (Kernels):由筆記本 Web 應用程序啟動的單獨進程,以給定語言運行用戶代碼並將輸出返回給筆記本 Web 應用程序。內核還處理諸如交互式小部件的計算、選項卡完成和內省之類的事情。
- 筆記本文件檔 (Notebook Documents):顯示所有在上述網頁應用程序 (Web Application) 當中的內容,包括計算的輸入/輸出、文件說明/解釋、數學運算及運算式、圖片及所有豐富多媒體內容。
並且可以共享包含即時程式碼創作 (live code)、方程式、可視化效果和敘述文本檔。用途包括數據清理 (Data Cleaning)和轉換 (Transformation)、數值模擬 (Numerical Simulation)、統計建模 (Statistical Modeling)、數據可視化 (Data Visualization)及機器學習 (Machine Learning)等,這些特性如下:
了解 Jupyter Notebook 是什麼後,就讓我們一起動手進行安裝並啟動環境吧!
2. Jupyter Notebook 安裝、啟動與建立說明
使用者若尚未決定是否要安裝 Jupyter Notebook,可選擇免安裝試用的方式體驗一下,再做決定就好。點選免安裝試用後會導引到下面畫面,您可以在不安裝任何東西的情況下,挑選下面任何一個範例來使用後,您將會得到一個暫時的 Jupyter Server 來服務您所選擇的範例。如果您覺得還不錯,那您將可以選擇為自己開始安裝 Jupyter Notebook了。
2.1 安裝前的準備:Python
雖然 Jupyter 可以有多種程式語言來執行程式代碼,但安裝 Jupyter Notebook 前,您必需先安裝 Python (Python 3.3及更高版本)。如果還沒安裝可參考 Python IDLE 完整安裝教學。
2.2 使用 Anaconda 安裝
對於剛接觸的新用戶,官方建議使用 Anaconda Distribution 來進行安裝,因為 Jupyter Notebook、常用的科學計算 (Scientific Computing)及資料科學 (Data Science) 所需套件 (Packages) 都已經包含在裡面,對於未來想進行 Data Science 的應用學習有很大的方便性。如果你還不會安裝 Anaconda,您可以參考下面這篇文章,將可以學到 step by step 完整詳細的安裝說明。
2.3 使用 pip 安裝
如果您已經是一個有經驗的使用者,那您可以可慮選擇 Python 的 package manager -> pip 來取代 Anaconda 的使用,安裝方式可參考下方說明:
- 先進行 pip 版本升級(建議)
pip3 install --upgrade pip
- 進行安裝
pip3 install notebook
2.4 Jupyter Notebook 啟動
Jupyter Notebook 安裝好後若要開始執行 Jupyter Notebook,您可以從 Windows 開始選單(Start menu)中選擇 Jupyter Notebook (如下圖)
或是在終端模式(Mac/Linux) or 命令提示模式(Windows)執行下列命令,同樣可以使用Jupyter Notebook了。
jupyter notebook
2.5 建立一個新的筆記本文檔
這時候您將開啟 Jupyter Notebook (如下圖),點選 New 並選擇您已安裝的 Python 3 就可以建立一個新的筆記本文檔。
3. Jupyter Notebook 介面說明
在開始使用之前,我們將先對 Jupyter Notebook 整個使用者介面,做一個非常完整的介紹,包括介紹 Notebook 和不同 Notebook 模式下各 UI 元素的名稱及用法。
3.1 Jupyter Notebook UI 組成
首先,我們可以先將整個使用者介面看成是由下面這兩個組件(Components)所組成的:筆記本儀表板 (Notebook Dashboard)以及 筆記本編輯器 (Notebook Editor)。
筆記本儀表板 (Notebook Dashboard)
啟動 Jupyter Notebook 時,第一個遇到的就是下圖中的 Notebook Dashboard。
首次啟動筆記本服務器時,您的瀏覽器將打開筆記本儀表板 (Notebook Dashboard),作為筆記本的主頁。它主要目的是顯示當前目錄中的筆記本及文件(如下圖)。
筆記本編輯器 (Notebook Editor)
選擇一個筆記本 (Notebook) 進行編輯時,該筆記本將在 筆記本編輯器 (Notebook Editor) 中打開。Jupyter Notebook 的編輯介面主要分為下面四個部分:
- 檔名 (File Name)
- 主選單 (Menu)
- 工具列 (Toolbar)
- 編輯單元 (Cell)
另外在右上角可以看到目前的編輯狀態及所使用的 Kernel 為何,如圖使用的是 Python 3。
接下來我們就根據上圖 Jupyter Notebook 的編輯介面,依序來介紹編輯單元(Cell)、工具列(Toolbar)及主選單(Menu)等功能。
3.2 編輯單元(Cell)
編輯單元(Cell)主要有兩種模式,分別是編輯模式 (Edit Mode)及命令模式 (Command Mode)。
編輯模式(Edit Mode)
編輯模式由綠色單元格邊框和在編輯器區域中顯示的提示指示,當單元處於編輯模式時(右上角也會出現一枝筆的 icon),您可以像普通的文件編輯器一樣鍵入到該編輯單元內。可以透過按 Enter 鍵或使用滑鼠游標單擊編輯單元 (Cell) 的編輯器區域來進入編輯模式。
命令模式(Command Mode)
命令模式則是由帶有藍色左邊界的灰色單元格邊框。在命令模式下,您可以整體編輯筆記本,但不能在單個單元格中鍵入內容。最重要的是,在命令模式下,鍵盤會對應到一組快速鍵,可讓您有效地執行筆記本和編輯單元操作。我們可以透過按 “ Esc” 鍵或使用滑鼠游標單擊 “在 Cell 的編輯器區域之外”來進入命令模式。
3.3 工具列(Toolbar)
下圖顯示工具列上所有 icon 的功能,大家可以參考下面圖解說明。
3.4 主選單(Menu)
儲存及載入(Saving/Loading)
程式碼及文本撰寫功能
程式碼和文本是由 3 種基本 cells 類型所包裝起來:Markdown cells、Code cells 及 Raw NBConvert cells。
- Edit
- Insert
- Executing
- View
使用指南(Help)
Jupyter Notebook 提供了許多線上的使用指南,包括在資料科學 (Data Science) 中常用的套件 (Packages)。
小工具(Widgets)
Jupyter Notebook 小工具(Widgets)提供了可視覺化及控制數據變化的能力。您可以使用它們為您的筆記本建構互動式圖形使用者介面(Graphical User Interface, GUI),或在 Python 和 JavaScript 之間同步stateful和stateless資訊。
與不同的程式語言溝通
Kernel 主要提供與前端(front-end)介面間的計算及通信,其中有三個主要的 Kernels 如下:
安裝 Jupyter Notebook 時將會自動安裝 IPython kernel。其它介面功能介紹如下圖:
了解 Jupyter Notebook 之後,您將可以更快速及便利的開始撰寫相關程式,邁向資料科學 (Data Science) 的學習之路又前進一步了。
如果你喜歡這篇文章歡迎訂閱、分享(請載名出處)與追蹤,並持續關注最新文章。同時 FB 及 IG 也會不定期提供國內外教育與科技新知。