當前位置:
首頁 > 知識 > 始於Jupyter Notebooks:一份全面的初學者實用指南

始於Jupyter Notebooks:一份全面的初學者實用指南

選自AnalyticsVidhya

作者:PRANAV DAR

機器之心編譯

參與:Panda

Jupyter Notebooks 是數據科學/機器學習社區內一款非常流行的工具。Analytics Vidhya 的 Pranav Dar 近日發表了一篇上手使用 Jupyter Notebooks 的指南,從安裝到基本功能進行了簡潔清晰的介紹。

引言

應該使用哪個 IDE/環境/工具?這是人們在做數據科學項目時最常問的問題之一。可以想到,我們不乏可用的選擇——從 R Studio 或 PyCharm 等語言特定的 IDE 到 Sublime Text 或 Atom 等編輯器——選擇太多可能會讓初學者難以下手。

如果說有什麼每個數據科學家都應該使用或必須了解的工具,那非 Jupyter Notebooks 莫屬了(之前也被稱為 iPython 筆記本)。Jupyter Notebooks 很強大,功能多,可共享,並且提供了在同一環境中執行數據可視化的功能。

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

在本文中,我們將介紹 Jupyter Notebooks 並深入了解它的功能和優勢。

讀完本文之後,你就知道你應該為你的機器學習項目使用 Jupyter Notebooks 的原因了。你也會知道為什麼人們會認為 Jupyter Notebooks 比該領域內的其它標準工具更好。

準備好學習了嗎?現在開始吧!

目錄

Jupyter Notebooks 是什麼?

如何安裝 Jupyter Notebooks?

開始上手!

使用神奇的功能

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

Jupyter Notebooks 中的互動式儀錶盤——何樂不為?

鍵盤快捷鍵——節省時間且更有生產力!

有用的 Jupyter Notebooks 擴展

保存和共享你的筆記本

JupyterLab——Jupyter Notebooks 的進化

最佳實踐和技巧

Jupyter Notebooks 是什麼?

Jupyter Notebooks 是一款開源的網路應用,我們可以將其用於創建和共享代碼與文檔。

其提供了一個環境,你無需離開這個環境,就可以在其中編寫你的代碼、運行代碼、查看輸出、可視化數據並查看結果。因此,這是一款可執行端到端的數據科學工作流程的便捷工具,其中包括數據清理、統計建模、構建和訓練機器學習模型、可視化數據等等。

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

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

如何安裝 Jupyter Notebooks?

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

1.Anaconda

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

Anaconda 會同時安裝這兩個工具,並且還包含相當多數據科學和機器學習社區常用的軟體包。你可以在這裡下載最新版的 Anaconda:https://www.anaconda.com/download

2.pip 方法

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

pip 安裝好之後,繼續安裝 Jupyter:

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

開始上手!

現在你已經知道這些筆記本是什麼以及如何將其安裝到你的機器上了。現在開始使用吧!

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

完成之後,Jupyter Notebooks 就會在你的默認網路瀏覽器打開,地址是:

在某些情況下,它可能不會自動打開。而是會在終端/命令行生成一個 URL,並帶有令牌密鑰提示。你需要將包含這個令牌密鑰在內的整個 URL 都複製並粘貼到你的瀏覽器,然後才能打開一個筆記本。

打開筆記本後,你會看到頂部有三個選項卡:Files、Running 和 Clusters。其中,Files 基本上就是列出所有文件,Running 是展示你當前打開的終端和筆記本,Clusters 是由 IPython 並行提供的。

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

Python 3

Text File

Folder

Terminal

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

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

Terminal 完全類似於在 Mac 或 Linux 機器上的終端(或 Windows 上的 cmd)。其能在你的網路瀏覽器內執行一些支持終端會話的工作。在這個終端輸入 python,你就可以開始寫你的 Python 腳本了!

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

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

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

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

Markdown——這是寫文本的地方。你可以在運行一段代碼後添加你的結論、添加註釋等。

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

Heading——這是你添加標題的地方,這樣你可以將不同的章節分開,讓你的筆記本看起來更整齊更清晰。這個現在已經被轉換成 Markdown 選項本身了。輸入一個「##」之後,後面輸入的內容就會被視為一個標題。

使用 Jupyter Notebooks 的神奇功能

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

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

逐行方式

逐單元方式

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

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

逐行方式:

逐單元方式:

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

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

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

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

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

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

Jupyter Notebooks 中的互動式儀錶盤——何樂不為?

在你考慮添加小部件之前,你需要導入 widgets 軟體包:

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

關於小部件的完整指南,請參閱:https://blog.dominodatalab.com/interactive-dashboards-in-jupyter/

鍵盤快捷鍵——節省時間且更有生產力!

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

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

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

你可以分別使用 Esc 和 Enter 在命令模式和編輯模式之間跳躍。現在就試試看吧!

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

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

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

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

Y 會將當前活躍的單元變成一個代碼單元。

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

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

處於編輯模式時(在命令模式時按 Enter 會進入編輯模式),你會發現下列快捷鍵很有用:

Ctrl + Home 到達單元起始位置。

Ctrl + S 保存進度。

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

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

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

要查看鍵盤快捷鍵完整列表,可在命令模式按「H」或進入「Help > Keyboard Shortcuts」。你一定要經常看這些快捷鍵,因為常會添加新的。

有用的 Jupyter Notebooks 擴展

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

第一步:從 pip 安裝它:

第二步:安裝相關的 JavaScript 和 CSS 文件:

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

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

Code prettify:它能重新調整代碼塊內容的格式並進行美化。

Printview:這個擴展會添加一個工具欄按鈕,可為當前筆記本調用 jupyter nbconvert,並可以選擇是否在新的瀏覽器標籤頁顯示轉換後的文件。

Scratchpad:這會添加一個暫存單元,讓你可以無需修改筆記本就能運行你的代碼。當你想實驗你的代碼但不想改動你的實時筆記本時,這會是一個非常方便的擴展。

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

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

保存和共享你的筆記本

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

進入「Files」菜單,你會看到「Download As」選項:

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

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

你也可以使用 jupyterhub,地址:https://github.com/jupyterhub/jupyterhub。其能讓你將筆記本託管在它的伺服器上並進行多用戶共享。很多頂級研究項目都在使用這種方式進行協作。

JupyterLab——Jupyter Notebooks 的進化

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

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

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

最佳實踐

儘管獨自工作可能很有趣,但大多數時候你都是團隊的一員。在這種情況下,遵循指導原則和最佳實踐是很重要的,能確保你的代碼和 Jupyter Notebooks 都有適當的注釋,以便與你的團隊成員保持一致。這裡我列出了一些最佳實踐指標,你在 Jupyter Notebooks 上工作時一定要遵守:

對任何程序員而言都是最重要的事情之一——總是確保你為你的代碼添加了適當的注釋!

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

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

不管你的代碼需要什麼庫,都在你的筆記本起始處導入它們。(並在旁邊添加註釋說明你載入它們的目的)

確保你的代碼有適當的行距。你不要將你的循環和函數放在同一行——否則如果後面要引用它們,會讓人抓狂的!

有時候你的文件中有非常大量的代碼。看看能不能將你認為不重要的某些代碼隱藏起來,之後再引用。這能讓你的筆記本看起來整潔清晰,這是非常可貴的。

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

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

要將你的筆記本轉換成幻燈片,進入「ViewCell Toolbar」,然後點擊「Slideshow」。現在,每個代碼塊右邊都顯示了一個「Slide Type」下拉選項。你能看到下列的 5 個選項:

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

結語

注意,這篇文章遠沒有完全覆蓋 Jupyter Notebooks 的功能。還有很多東西要在你使用得更多之後才會用到。功能雖多,但關鍵在於實踐出真知。

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

這份指南只是你的數據科學旅程的起點,我很高興能與你一起前行!

原文地址:https://www.analyticsvidhya.com/blog/2018/05/starters-guide-jupyter-notebook/

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

深度學習自動前端開發:從草圖到HTML只需5秒
DeepMind論文:CNN的變形穩定性和池化無關,濾波器平滑度才是關鍵

TAG:機器之心 |