增強(qiáng)Jupyter Notebook的功能,這里有四個(gè)妙招
Jupyter Notebook 是所有開發(fā)者共享工作的神器,它為共享 Notebooks 提供了一種便捷方式:結(jié)合文本、代碼和圖更快捷地將信息傳達(dá)給受眾。目前,Jupyter Notebook 已經(jīng)應(yīng)用于數(shù)據(jù)分析和數(shù)據(jù)科學(xué)等領(lǐng)域。
然而,大部分開發(fā)者僅僅了解其皮毛。開發(fā)者使用 Jupyter Notebook 的基本功能來寫 Python 代碼、展示圖。但是你們知道 Jupyter 中還有大量自定義功能嗎?這些很酷的選項(xiàng)可以幫助你使用 Jupyter notebook 更高效地寫代碼、展示圖。
本文將介紹強(qiáng)化 Jupyter Notebook 功能的 4 種方法。
1. 執(zhí)行 Shell 命令
在技術(shù)或編程文本中,shell 表示使用文本與計(jì)算機(jī)進(jìn)行交互的方式。最流行的 Unix shell 是 Bash(Bourne Again SHell),Bash 是 Linux 機(jī)器上終端默認(rèn)的 shell。
在使用 Python 工作時(shí),你會(huì)經(jīng)常在寫 Python 代碼和使用 shell 命令之間來回切換。例如,你想使用 Python 讀取磁盤中的某份文件,而這需要你確認(rèn)文件名。通常情況下,你需要在終端輸入 ls,獲得當(dāng)前目錄的所有文件和文件夾列表。但這樣來回切換非常繁瑣低效。
很炫酷的是,Jupyter 能夠執(zhí)行 Shell 命令,你甚至無需離開瀏覽器。只需要在 shell 命令前加一個(gè)感嘆號(hào)!,Jupyter 會(huì)將其轉(zhuǎn)換為 Bash。在任一命令前加感嘆號(hào)!,它們就可以在 Python Jupyter Notebook 中運(yùn)行。
- # Listing folder contents
 - >>> !ls
 - mynotebook.ipynb stuff.txt# Getting the current directory
 - >>> !pwd
 - /home/george/github/project_1# Printing from Bash
 - >>> !echo "Pizza is delicious!"
 - Pizza is delicious!
 
我們還可以將 shell 命令的輸出分配給 Python 變量,如下所示:
- # Getting the current directory.
 - # The variable "X" now contains ["/home/george/github/project_1"]
 - X = !pwd
 
2. 更換主題
很多文本編輯器和編程 IDE 都有自定義主題。開發(fā)者最喜歡的主題之一是暗黑主題(如 monaki),因?yàn)閷?duì)于整天盯著屏幕的開發(fā)者而言,暗黑主題看起來比較舒適。幸運(yùn)的是,Jupyter 有一個(gè)插件,允許用戶自行選擇主題。
要想安裝該插件,你只需在終端中運(yùn)行以下 pip 命令:
- pip install jupyterthemes
 
運(yùn)行以下命令,可得到可用的主題列表:
- jt -l
 
截至本文寫作時(shí),可選擇的主題包括:
- chesterish
 - grade3
 - gruvboxd
 - gruvboxl
 - monokai
 - oceans16
 - onedork
 - solarizedd
 - solarizedl
 
查看這些主題,如下圖所示,我們擁有大量不同的顏色選擇。
solarizedd(左),gruvboxl(中),grade3(右)。
3. Notebook 擴(kuò)展插件
Jupyter Notebook 擴(kuò)展插件(nbextensions)是一些 JavaScript 模塊,你可以使用它們強(qiáng)化 Notebook 的功能以及使用。擴(kuò)展插件本質(zhì)上修改了 Jupyter UI,以實(shí)現(xiàn)更穩(wěn)健的功能。
我們首先通過 pip 安裝 nbextensions:
- pip install jupyter_contrib_nbextensions
 - jupyter contrib nbextension install
 
安裝完成后,啟動(dòng) Jupyter。你將看到一個(gè)新選項(xiàng)——NBextensions。選擇它之后,你會(huì)看到大量 Jupyter Notebook 擴(kuò)展插件選項(xiàng)。
通過快速搜索,你可以查看這些擴(kuò)展插件的功能。下面我將介紹幾個(gè)最重要的插件。
(1) Table of Contents
正如其名稱所描述的那樣,Table of Contents 基于 notebook 中 # 創(chuàng)建的標(biāo)題自動(dòng)生成目錄。例如,我在 notebook 中創(chuàng)建了以下標(biāo)題:
- # This is a super big title
 - ## This is a big title
 - ### This is a medium title
 - #### This is a small title
 
則左側(cè)會(huì)生成目錄。雙擊標(biāo)題,可鏈接至對(duì)應(yīng)章節(jié)內(nèi)容。當(dāng) notebook 規(guī)模很大,選項(xiàng)很多時(shí),這個(gè)功能非常方便!
(2) Hinterland
代碼補(bǔ)全是大部分 IDE 都具備的常見功能,比如 PyCharm。開發(fā)者喜歡這個(gè)功能,因?yàn)檫@使得他們的工作更加簡單,開發(fā)者無需記住每一個(gè)命令,IDE 會(huì)準(zhǔn)備好一切。
Hinterland 可在 Jupyter Notebook 內(nèi)完成代碼補(bǔ)全。在鍵入過程中,你會(huì)看到一些代碼補(bǔ)全建議。尤其是當(dāng)你搜索外部庫的命令時(shí)(示例如下所示)。這簡直太方便了!
(3) 拆分單元格(Split Cells)
拆分單元格允許開發(fā)者并排查看 2 個(gè)單元格。當(dāng)你有兩個(gè)相關(guān)單元格時(shí)(比如描述及其對(duì)應(yīng)的圖示),這個(gè)功能非常方便。

4. 使用 Qgrid 探索 Dataframes
最后一站是 Qgrid,該工具允許開發(fā)者在不使用復(fù)雜 Pandas 代碼的情況下,探索和編輯數(shù)據(jù)幀。Qgrid 可在 Jupyter notebook 中以交互的方式渲染 pandas 數(shù)據(jù)幀,這樣你就可以執(zhí)行一些直觀的控制,如滾動(dòng)、排序和篩選,以及雙擊單元格編輯數(shù)據(jù)幀。
我們首先安裝 Qgrid:
- pip install qgrid
 - jupyter nbextension enable --py --sys-prefix widgetsnbextension
 
要想使用 Qgrid 渲染數(shù)據(jù)幀,開發(fā)者只需導(dǎo)入 Qgrid,然后將數(shù)據(jù)幀輸入到 show_grid 函數(shù):
- import qgrid
 - qgridqgrid_widget = qgrid.show_grid(df, show_toolbar=True)
 - qgrid_widget
 
這樣,你可以對(duì)數(shù)據(jù)幀執(zhí)行大量交互式操作:
- 添加和刪除行;
 - 篩選行;
 - 編輯單元格。
 
將更多參數(shù)輸入 show_grid 函數(shù)可以執(zhí)行其他交互式操作。關(guān)于 Qgrid 的全部功能,參見:https://github.com/quantopian/qgrid。

以上就是強(qiáng)化 Jupyter Notebook 功能的 4 種方法。
原文鏈接:
https://towardsdatascience.com/4-awesome-tips-for-enhancing-jupyter-notebooks-4d8905f926c5
【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】




















 
 
 








 
 
 
 