關於 Jupyter 的使用說明

MirrorTan發表於2019-08-27

Jupyter 是一項基於 IPython 的開源工具,它支援各種程式語言,因其在互動式工作中的良好表現而被廣泛應用於「資料科學」及「科學計算」領域。

其官網為:https://jupyter.org.

相較於 IPython 而言,二者最大的區別在於 IPython 是基於本地的命令列工具,而 Jupyter 是則基於網頁。因此,Jupyter 除支援 IPython 的功能外,它採用基於 JSON 的文件格式 .ipynb 進行儲存(更便於儲存及分享),引入「編輯模式」支援 Markdown 格式,且可以在雲伺服器中執行。

當然,要充分利用 Jupyter 還是離不開基礎的 IPython 功能,可參見我 之前的部落格 以及 IPython 官方文件 進行學習

1 安裝與執行

官網推薦可採用以下 condapip 兩種方式進行安裝:

$ conda install -c conda-forge jupyter

or

$ pip install jupyter

注意:建議使用國內映象源,否則速度可能很慢:

$ cat > ~/.pip/pip.conf
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com

安裝完成後,可直接使用 jupyter notebook 命令執行,該命令會自動開啟預設瀏覽器並轉到 http://127.0.0.1:8888 (若未自動開啟,可在瀏覽器輸入該 URL)。

開啟 http://127.0.0.1:8888 後,會進入 Notebook 的儀表板,會呈現當前目錄下的各種檔案,點選右上角的「New -> Python3」即可新建一個基於 Python3 的 Jupyter Notebook 檔案。

當進入 Notebook 檔案後,強烈建議點選 「選單欄」 中「Help -> User Interface Tour」快速瞭解一些基礎操作。

2 一些重要的概念

Cell, Jupyter 通過「單元格」來進行組織。每個單元格均可以為「標記」或「程式碼」中的一種:

  • 標記:即可使用 Markdown 格式的文字,主要用於進行說明;
  • 程式碼:即進行程式碼撰寫,使用方式與 IPython 中的輸入類似。

此外,每個單元格(包括「標記單元格」及「程式碼單元格」)均有「命令模式」及「編輯模式」兩種模式:

  • 命令模式:選中單元格後按 Esc 即進入命令模式,可輸入各種快捷命令,實現對單元格的「新增」、「刪除」以及「執行程式碼」等一系列操作。
  • 編輯模式:選中單元格後按 Enter 即可進入編輯模式,對單元格中的內容進行編輯,輸入程式碼或 Markdown 格式的文字。

Tips: 當單元格為「命令模式」時,單元格中的外框線為藍色;當單元格進入「編輯模式」時,單元格外邊框線為綠色。

3 快捷鍵

Jupyter 中的一些快捷鍵可加快常用的操作,所有可用的快捷鍵可通過「Help->Keyboard Shortcuts」檢視,以下是個人使用中常用的一些快捷鍵:

  1. 查詢幫助類:
    • H:可調出所有可用的快捷鍵。
    • F:在當前 Notebook 中進行字元查詢及替換。
    • P:搜尋可用的快捷鍵。
  2. 單元格操作類:
    • A:在當前單元格上方插入單元格。
    • B:在當前單元格下方插入單元格。
    • Ctrl + Enter:執行當前選中單元格。
    • Shift + Enter:執行當前單元格並選擇或插入新的單元格。
    • D, D:刪除選中單元格。
    • J:選中上一個單元格。
    • K:選中下一個單元格。
    • L:顯示或關閉當前單元格行號。
  3. 型別模式轉換類:
    • Y:單元格由「標記」格式轉化為「程式碼」格式。
    • M:單元格由「程式碼」格式轉化為「標記」格式。
    • Esc:由「編輯模式」轉化為「命令模式」。
    • Enter:由「命令模式」轉化為「編輯模式」。

注意:上述快捷鍵除 Esc 是在「編輯模式」中使用的外,其餘快捷鍵均需在「命令模式」中使用。

4 配置及外掛

4.1 自定義配置

Jupyter 繼承自 IPython,也可以進行自定義的設定,相關配置檔案預設位於 ~/.jupyter 目錄,具體配置檔案可通過以下命令檢視:

# 檢視配置檔案的位置
$ jupyter --config-dir
~/.jupyter
# 檢視資料檔案的位置
$ jupyter --data-dir
~/Library/Jupyter

當然,也可以通過設定環境變數 JUPYTER_CONFIG_DIR 來改變配置檔案的位置。

Python 配置檔案可通過以下命令建立:

$ jupyter notebook --generate-config

該命令會在 ~/.jupyter 目錄下生成 jupyter_notebook_config.py 檔案,通過編輯該檔案可設定一些配置,如在配置檔案中寫入 c.NotebookApp.port = 8754, 則可改變開啟 Notebook 時的埠。

4.2 外掛擴充

除可通過設定配置檔案的方式來自定義 Jupyter 外,也可以利用 Jupyter 的擴充來豐富其功能,安裝外掛的命令為:

$ jupyter nbextension install [packages]

除此之外,我們也可以利用第三方的外掛 jupyter_contrib_nbextensions 實現對外掛的管理:

$ pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install

當安裝完該外掛管理器後,重新開啟 Jupyter Notebook 時首頁會多出一個 Nbextensions 的選項卡,可通過視覺化的方式完成 Jupyter 的外掛安裝。

其中個人比較常用的外掛有:

  • Table of Contents:導航欄
  • Codefolding:「程式碼」摺疊
  • Autopep8:「程式碼」格式調整,符合 pep8 規範

這些外掛實際上就是 JavaScript 和 CSS 配置檔案,用以豐富 Jupyter Notebook 的功能。

5 其他相關說明

5.1 檔案儲存

我們可以將撰寫的 Jupyter 文件(.ipynb) 格式文件另存為 py, md, pdf, html 等多種格式,只需在開啟的 Notebook 中通過「File -> Download as」並選擇相應的格式即可。

將 Notebook 轉化為其他格式的檔案是利用 nbconvert 來實現的,另存為 PDF 格式的檔案需要額外 安裝 pandoc 庫

Tips: 將 Notebook 下載為 Reveal.js slides(.slides.html) 格式,可將 Notebook 轉化為便於展示的格式。

5.2 許可權管理與共享

包含整個計算過程及結果的 Jupyter Notebook 文件即可以通過常見的「郵件」、「版本控制系統」(git/github)」進行分享之外,也可以將運算結果通過 nbviewer.ipython.org 在 web 上進行展示和分享。

而要進行許可權管理及多人共享的 Jupyter Notebook 環境,需要藉助於 Jupyterhub 實現。

5.3 平行計算

Jupyter 還支援平行計算,該功能通過由 IPython parallel 提供。

$ pip install ipyparallel
# 在 Jupyter Notebook 中啟用
$ ipcluster nbextension enable

安裝完成後,可通過 Notebook 首頁的 Dashboard 中進行管理。當然,也可以通過 jupyter_notebook_config.py 配置檔案進行管理。

6 更多關於 Jupyter 的使用

Jupyter Family 中工具較多,各種工具的圖示關係如下:

Jupyter Family Toolkits relationships

更多相關操作詳見 官方文件

7 參考資料

  1. Jupyter Notebook 官方文件, https://jupyter-notebook.readthedocs.io/en..., 2019/08/27.
  2. Jupyter contrib nbextensions 官方文件, https://jupyter-contrib-nbextensions.readt..., 2019/08/27.
  3. Jupyterhub 官方文件, https://jupyterhub.readthedocs.io/en/stabl..., 2019/08/27.
  4. McKinney, Wes. Python for data analysis: Data wrangling with Pandas, NumPy, and IPython. " O'Reilly Media, Inc.", 2012.

相關文章