Jupyter Notebook初學(xué)者實用指南

引言

應(yīng)該使用哪個 IDE/環(huán)境/工具?這是人們在做數(shù)據(jù)科學(xué)項目時最常問的問題之一??梢韵氲剑覀儾环捎玫倪x擇——從 R Studio 或 PyCharm 等語言特定的 IDE 到 Sublime Text 或 Atom 等編輯器——選擇太多可能會讓初學(xué)者難以下手。

如果說有什么每個數(shù)據(jù)科學(xué)家都應(yīng)該使用或必須了解的工具,那非 Jupyter Notebooks 莫屬了(之前也被稱為 iPython 筆記本)。Jupyter Notebooks 很強大,功能多,可共享,并且提供了在同一環(huán)境中執(zhí)行數(shù)據(jù)可視化的功能。

Jupyter Notebooks 允許數(shù)據(jù)科學(xué)家創(chuàng)建和共享他們的文檔,從代碼到全面的報告都可以。它們能幫助數(shù)據(jù)科學(xué)家簡化工作流程,實現(xiàn)更高的生產(chǎn)力和更便捷的協(xié)作。由于這些以及你將在下面看到的原因,Jupyter Notebooks 成了數(shù)據(jù)科學(xué)家最常用的工具之一。

在本文中,我們將介紹 Jupyter Notebooks 并深入了解它的功能和優(yōu)勢。

讀完本文之后,你就知道你應(yīng)該為你的機器學(xué)習(xí)項目使用 Jupyter Notebooks 的原因了。你也會知道為什么人們會認(rèn)為 Jupyter Notebooks 比該領(lǐng)域內(nèi)的其它標(biāo)準(zhǔn)工具更好。

準(zhǔn)備好學(xué)習(xí)了嗎?現(xiàn)在開始吧!

目錄

1、Jupyter Notebooks 是什么?

2、如何安裝 Jupyter Notebooks?

3、開始上手!

4、使用神奇的功能

5、不只限于 Python——在 Jupyter Notebooks 中使用 R、Julia 和 JavaScript

6、Jupyter Notebooks 中的交互式儀表盤——何樂不為?

7、鍵盤快捷鍵——節(jié)省時間且更有生產(chǎn)力!

8、有用的 Jupyter Notebooks 擴展

9、保存和共享你的筆記本

10、JupyterLab——Jupyter Notebooks 的進(jìn)化

11、最佳實踐和技巧

一、Jupyter Notebooks 是什么?

Jupyter Notebooks 是一款開源的網(wǎng)絡(luò)應(yīng)用,我們可以將其用于創(chuàng)建和共享代碼與文檔。

其提供了一個環(huán)境,你無需離開這個環(huán)境,就可以在其中編寫你的代碼、運行代碼、查看輸出、可視化數(shù)據(jù)并查看結(jié)果。因此,這是一款可執(zhí)行端到端的數(shù)據(jù)科學(xué)工作流程的便捷工具,其中包括數(shù)據(jù)清理、統(tǒng)計建模、構(gòu)建和訓(xùn)練機器學(xué)習(xí)模型、可視化數(shù)據(jù)等等。

當(dāng)你還處于原型開發(fā)階段時,Jupyter Notebooks 的作用更是引人注目。這是因為你的代碼是按獨立單元的形式編寫的,而且這些單元是獨立執(zhí)行的。這讓用戶可以測試一個項目中的特定代碼塊,而無需從項目開始處執(zhí)行代碼。很多其它 IDE 環(huán)境(比如 RStudio)也有其它幾種方式能做到這一點,但我個人覺得 Jupyter 的單個單元結(jié)構(gòu)是最好的。

正如你將在本文中看到的那樣,這些筆記本非常靈活,能為數(shù)據(jù)科學(xué)家提供強大的交互能力和工具。它們甚至允許你運行 Python 之外的其它語言,比如 R、SQL 等。因為它們比單純的 IDE 平臺更具交互性,所以它們被廣泛用于以更具教學(xué)性的方式展示代碼。

二、如何安裝 Jupyter Notebooks?

你可能已經(jīng)猜到了,你首先需要在你的機器上安裝 Python。Python 2.7 或 Python 3.3(或更新版本)都可以。

1.Anaconda

對新用戶而言,一般的共識是你應(yīng)該使用 Anaconda 發(fā)行版來安裝 Python 和 Jupyter Notebooks。

Anaconda 會同時安裝這兩個工具,并且還包含相當(dāng)多數(shù)據(jù)科學(xué)和機器學(xué)習(xí)社區(qū)常用的軟件包。你可以在這里下載最新版的 Anaconda:https://www.anaconda.com/download

2.pip 方法

如果你因為某些原因不愿意使用 Anaconda,那么你需要確保你的機器運行著最新版的 pip。該怎么做呢?如果你已經(jīng)安裝了 Python,那么就已經(jīng)有 pip 了。你可以使用以下代碼升級到最新版的 pip:

#Linux and OSXpip install -U pip setuptools#Windowspython -m pip install -U pip setuptools

pip 安裝好之后,繼續(xù)安裝 Jupyter:

#For Python2pip install jupyter#For Python3pip3 install jupyter

你可以在這里查看官方的 Jupyter 安裝文檔:https://jupyter.readthedocs.io/en/latest/install.html

三、開始上手!

現(xiàn)在你已經(jīng)知道這些筆記本是什么以及如何將其安裝到你的機器上了。現(xiàn)在開始使用吧!

要運行你的 Jupyter Notebooks,只需在命令行輸入以下命令即可!

jupyter notebook

完成之后,Jupyter Notebooks 就會在你的默認(rèn)網(wǎng)絡(luò)瀏覽器打開,地址是:

http://localhost:8888/tree

在某些情況下,它可能不會自動打開。而是會在終端/命令行生成一個 URL,并帶有令牌密鑰提示。你需要將包含這個令牌密鑰在內(nèi)的整個 URL 都復(fù)制并粘貼到你的瀏覽器,然后才能打開一個筆記本。

打開筆記本后,你會看到頂部有三個選項卡:Files、Running 和 Clusters。其中,F(xiàn)iles 基本上就是列出所有文件,Running 是展示你當(dāng)前打開的終端和筆記本,Clusters 是由 IPython 并行提供的。

要打開一個新的 Jupyter 筆記本,點擊頁面右側(cè)的「New」選項。你在這里會看到 4 個需要選擇的選項:

Python 3

Text File

Folder

Terminal

選擇 Text File,你會得到一個空面板。你可以添加任何字母、單詞和數(shù)字。其基本上可以看作是一個文本編輯器(類似于 Ubuntu 的文本編輯器)。你可以在其中選擇語言(有很多語言選項),所以你可以在這里編寫腳本。你也可以查找和替換該文件中的詞。

選擇 Folder 選項時,你會創(chuàng)建一個新的文件夾,你可以在其中放入文件,重命名或刪除它。各種操作都可以。

Terminal 完全類似于在 Mac 或 Linux 機器上的終端(或 Windows 上的 cmd)。其能在你的網(wǎng)絡(luò)瀏覽器內(nèi)執(zhí)行一些支持終端會話的工作。在這個終端輸入 python,你就可以開始寫你的 Python 腳本了!

但在本文中,我們重點關(guān)注的是筆記本,所以我們從 New 選項中選擇 Python 3。你會看到下面的屏幕:

然后你可以從導(dǎo)入最常見的 Python 庫開始:pandas 和 numpy。在代碼上面的菜單中,你有一些操作各個單元的選項:添加、編輯、剪切、向上和向下移動單元、運行單元內(nèi)的代碼、停止代碼、保存工作以及重啟 kernel。

在上圖所示的下拉菜單中,你還有 4 個選項:

Code——不言而喻,就是寫代碼的地方。

Markdown——這是寫文本的地方。你可以在運行一段代碼后添加你的結(jié)論、添加注釋等。

Raw NBConvert——這是一個可將你的筆記本轉(zhuǎn)換成另一種格式(比如 HTML)的命令行工具。

Heading——這是你添加標(biāo)題的地方,這樣你可以將不同的章節(jié)分開,讓你的筆記本看起來更整齊更清晰。這個現(xiàn)在已經(jīng)被轉(zhuǎn)換成 Markdown 選項本身了。輸入一個「##」之后,后面輸入的內(nèi)容就會被視為一個標(biāo)題。

四、使用 Jupyter Notebooks 的神奇功能

Jupyter Notebooks 的開發(fā)者已經(jīng)在其中內(nèi)置了一些預(yù)定義的神奇功能,能讓你的生活更輕松,讓你的工作更具交互性。你可以運行下面的命令來查看功能列表(注:% 符號通常不需要,因為自動補齊功能通常是開啟的):

%lsmagic

你會看到列出了很多選擇,你甚至可能能認(rèn)出其中一些!%clear、%autosave、%debug 和 %mkdir 等功能你以前肯定見過。現(xiàn)在,神奇的命令可以以兩種方式運行:

(1)逐行方式

(2)逐單元方式

顧名思義,逐行方式是執(zhí)行單行的命令,而逐單元方式則是執(zhí)行不止一行的命令,而是執(zhí)行整個單元中的整個代碼塊。

在逐行方式中,所有給定的命令必須以 % 字符開頭;而在逐單元方式中,所有的命令必須以 %% 開頭。我們看看下列示例以便更好地理解:

1、逐行方式:

%time a = range(10)

2、逐單元方式:

%%timeit

a = range (10)

min(a)

我建議你運行這些代碼,親自看看它們的不同之處!

五、不只限于 Python——在 Jupyter Notebooks 中使用 R、Julia 和 JavaScript

神奇之處可不止這點。你甚至能在你的筆記本中使用其它語言,比如 R、Julia、JavaScript 等。我個人很喜歡 R 中的 ggplot2 軟件包,所以使用它來進(jìn)行探索性的數(shù)據(jù)分析具有很大很大的優(yōu)勢。

要在 Jupyter 中啟用 R,你需要 IRKernel。這是針對 R 的專用 kernel,你可以在 GitHub 上獲取。這需要 8 個步驟,已經(jīng)有詳細(xì)的解釋了,另外還有截圖指導(dǎo),參閱:https://discuss.analyticsvidhya.com/t/how-to-run-r-on-jupyter-ipython-notebooks/5512

如果你是一位 Julia 用戶,你也能在 Jupyter Notebooks 中使用 Julia!你可以查看這篇為 Julia 用戶學(xué)習(xí)數(shù)據(jù)科學(xué)而編寫的全面介紹文章,其中有一個章節(jié)就是關(guān)于如何在 Jupyter 環(huán)境中使用 Julia:https://www.analyticsvidhya.com/blog/2017/10/comprehensive-tutorial-learn-data-science-julia-from-scratch/

如果你更偏愛 JavaScript,那么我推薦使用 IJavascript kernel。這個 GitHub 庫包含了在不同操作系統(tǒng)上安裝這個 kernel 的各個步驟:https://github.com/n-riesco/ijavascript。注意,在使用它之前,你必需要先安裝好 Node.js 和 npm。

六、Jupyter Notebooks 中的交互式儀表盤——何樂不為?

在你考慮添加小部件之前,你需要導(dǎo)入 widgets 軟件包:

from ipywidgets import widgets

小部件的基本類型有典型的文本輸入小部件、基于輸入的小部件和按鈕小部件。下面的例子來自 Dominodatalab,給出了交互式小部件的一些外觀:

關(guān)于小部件的完整指南,請參閱:https://blog.dominodatalab.com/interactive-dashboards-in-jupyter/

七、鍵盤快捷鍵——節(jié)省時間且更有生產(chǎn)力!

快捷方式是 Jupyter Notebooks 最大的優(yōu)勢之一。當(dāng)你想運行任意代碼塊時,只需要按 Ctrl+Enter 就行了。Jupyter Notebooks 提供了很多鍵盤快捷鍵,可以幫助我們節(jié)省很多時間。

下面是我們手動選擇的一些對你的上手會有莫大幫助的快捷方式。我強烈建議你在閱讀本文時逐一嘗試一下。未來你會離不開它們的!

Jupyter Notebooks 提供了兩種不同的鍵盤輸入模式——命令和編輯。命令模式是將鍵盤和筆記本層面的命令綁定起來,并且由帶有藍(lán)色左邊距的灰色單元邊框表示。編輯模式讓你可以在活動單元中輸入文本(或代碼),用綠色單元邊框表示。

你可以分別使用 Esc 和 Enter 在命令模式和編輯模式之間跳躍?,F(xiàn)在就試試看吧!

進(jìn)入命令模式之后(此時你沒有活躍單元),你可以嘗試以下快捷鍵:

A 會在活躍單元之上插入一個新的單元,B 會在活躍單元之下插入一個新單元。

連續(xù)按兩次 D,可以刪除一個單元。

撤銷被刪除的單元,按 Z。

Y 會將當(dāng)前活躍的單元變成一個代碼單元。

按住 Shift +上或下箭頭可選擇多個單元。在多選模式時,按住 Shift + M 可合并你的選擇。

按 F 會彈出「查找和替換」菜單。

處于編輯模式時(在命令模式時按 Enter 會進(jìn)入編輯模式),你會發(fā)現(xiàn)下列快捷鍵很有用:

Ctrl + Home 到達(dá)單元起始位置。

Ctrl + S 保存進(jìn)度。

如之前提到的,Ctrl + Enter 會運行你的整個單元塊。

Alt + Enter 不止會運行你的單元塊,還會在下面添加一個新單元。

Ctrl + Shift + F 打開命令面板。

要查看鍵盤快捷鍵完整列表,可在命令模式按「H」或進(jìn)入「Help > Keyboard Shortcuts」。你一定要經(jīng)??催@些快捷鍵,因為常會添加新的。

八、有用的 Jupyter Notebooks 擴展

擴展/附加組件是一種非常有生產(chǎn)力的方式,能幫你提升在 Jupyter Notebooks 上的生產(chǎn)力。我認(rèn)為安裝和使用擴展的最好工具之一是 Nbextensions。在你的機器上安裝它只需簡單兩步(也有其它安裝方法,但我認(rèn)為這個最方便):

第一步:從 pip 安裝它:

pip install jupyter_contrib_nbextensions

第二步:安裝相關(guān)的 JavaScript 和 CSS 文件:

jupyter contrib nbextension install –user

完成這個工作之后,你會在你的 Jupyter Notebook 主頁頂部看見一個 Nbextensions 選項卡。點擊一下,你就能看到很多可在你的項目中使用的擴展。

要啟用某個擴展,只需勾選它即可。下面我給出了 4 個我覺得最有用的擴展:

Code prettify:它能重新調(diào)整代碼塊內(nèi)容的格式并進(jìn)行美化。

Printview:這個擴展會添加一個工具欄按鈕,可為當(dāng)前筆記本調(diào)用 jupyter nbconvert,并可以選擇是否在新的瀏覽器標(biāo)簽頁顯示轉(zhuǎn)換后的文件。

Scratchpad:這會添加一個暫存單元,讓你可以無需修改筆記本就能運行你的代碼。當(dāng)你想實驗?zāi)愕拇a但不想改動你的實時筆記本時,這會是一個非常方便的擴展。

Table of Contents (2):這個很棒的擴展可以收集你的筆記本中的所有標(biāo)題,并將它們顯示在一個浮動窗口中。

這只是少量幾個擴展。我強烈建議你查看完整擴展列表并實驗它們的功能。

九、保存和共享你的筆記本

這是 Jupyter Notebooks 最重要且最出色的功能之一。當(dāng)我必須寫一篇博客文章時,我的代碼和評論都會在一個 Jupyter 文件中,我需要首先將它們轉(zhuǎn)換成另一個格式。記住這些筆記本是 json 格式的,這在進(jìn)行共享時不會很有幫助。我總不能在電子郵件和博客上貼上不同單元塊,對不對?

進(jìn)入「Files」菜單,你會看到「Download As」選項:

你可以用 7 種可選格式保存你的筆記本。其中最常用的是 .ipynb 文件和 .html 文件。使用 .ipynb 文件可讓其他人將你的代碼復(fù)制到他們的機器上,使用 .html 文件能以網(wǎng)頁格式打開(當(dāng)你需要保存嵌入在筆記本中的圖片時會很方便)。

你也可以使用 nbconvert 選項手動將你的筆記本轉(zhuǎn)換成 HTML 或 PDF 等格式。

你也可以使用 jupyterhub,地址:https://github.com/jupyterhub/jupyterhub。其能讓你將筆記本托管在它的服務(wù)器上并進(jìn)行多用戶共享。很多頂級研究項目都在使用這種方式進(jìn)行協(xié)作。

十、JupyterLab——Jupyter Notebooks 的進(jìn)化

JupyterLab 是今年二月份推出的,被認(rèn)為是 Jupyter Notebooks 的進(jìn)一步發(fā)展。其支持更加靈活和更加強大的項目操作方式,但具有和 Jupyter Notebooks 一樣的組件。JupyterLab 環(huán)境與 Jupyter Notebooks 環(huán)境完全一樣,但具有生產(chǎn)力更高的體驗。

JupyterLab 讓你能在一個窗口中排布你的筆記本、終端、文本文件和輸出結(jié)果工作區(qū)!你只需拖放你需要的單元即可。你也可以編輯 Markdown、CSV 和 JSON 等常用文件格式并實時預(yù)覽修改所造成的影響。

如果你想在你的機器上試用 JupyterLab,可查看安裝說明:http://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html。JupyterLab 的開發(fā)者的長期目標(biāo)是最終替代 Jupyter Notebooks。但目前來看這還需要一些時間。

十一、最佳實踐

盡管獨自工作可能很有趣,但大多數(shù)時候你都是團隊的一員。在這種情況下,遵循指導(dǎo)原則和最佳實踐是很重要的,能確保你的代碼和 Jupyter Notebooks 都有適當(dāng)?shù)淖⑨?,以便與你的團隊成員保持一致。這里我列出了一些最佳實踐指標(biāo),你在 Jupyter Notebooks 上工作時一定要遵守:

對任何程序員而言都是最重要的事情之一——總是確保你為你的代碼添加了適當(dāng)?shù)淖⑨專?/p>

確保你的代碼有所需的文檔。

考慮一個命名方案并貫徹始終。這能讓其他人更容易遵循。

不管你的代碼需要什么庫,都在你的筆記本起始處導(dǎo)入它們。(并在旁邊添加注釋說明你載入它們的目的)

確保你的代碼有適當(dāng)?shù)男芯?。你不要將你的循環(huán)和函數(shù)放在同一行——否則如果后面要引用它們,會讓人抓狂的!

有時候你的文件中有非常大量的代碼??纯茨懿荒軐⒛阏J(rèn)為不重要的某些代碼隱藏起來,之后再引用。這能讓你的筆記本看起來整潔清晰,這是非??少F的。

查看這個在 matplotlib 上的筆記本,看看可以如何簡練地進(jìn)行呈現(xiàn):http://nbviewer.jupyter.org/github/jrjohansson/scientific-python-lectures/blob/master/Lecture-4-Matplotlib.ipynb

另一個額外技巧!在你想創(chuàng)建一個演示文稿時,你可能首先想到的工具是 PowerPoint 和 Google Slides。其實你的 Jupyter Notebooks 也能創(chuàng)建幻燈片!還記得我說過 Jupyter Notebooks 很靈活嗎?我可沒有夸大其辭。

要將你的筆記本轉(zhuǎn)換成幻燈片,進(jìn)入「View→Cell Toolbar」,然后點擊「Slideshow」。現(xiàn)在,每個代碼塊右邊都顯示了一個「Slide Type」下拉選項。你能看到下列的 5 個選項:

你最好試試每個選項,以便更好地理解它們。這能改變你展示代碼的方式!

結(jié)語

注意,這篇文章遠(yuǎn)沒有完全覆蓋 Jupyter Notebooks 的功能。還有很多東西要在使用得更多之后才會用到。功能雖多,但關(guān)鍵在于實踐出真知。

這個 GitHub 庫包含了一些有趣迷人的 Jupyter Notebooks:https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容