jupyter notebook 可以做哪些事情?


我在另一篇問題中針對這個問題的回答


我會從下面4個方面詳細聊聊,記得實踐每一步,你將不僅了解什麼是Jupyter notebook,而且還能輕鬆使用這個神器。

1.Jupyter notebook 是什麼?

2.如何安裝 Jupyter notebook?

3.如何啟動Jupyter notebook?

4.新手如何快速使用notebook?

1.Jupyter notebook 是什麼?

在沒有notebook之前,在IT領域工作的我都是這樣工作的:

在普通的 Python shell 或者在IDE(集成開發環境)如Pycharm中寫代碼,然後在word中寫文檔來說明你的項目。

這個過程很反鎖,通常是寫完代碼,再寫文檔的時候我還的重頭回顧一遍代碼。最蛋疼的地方在於,有些數據分析的中間結果,我還的重新跑代碼,然後把結果弄到文檔里給客戶看。

有了notebook之後,我的世界突然美好了許多,因為notebook 可以直接在代碼旁寫出敘述性文檔,而不是另外編寫單獨的文檔。也就是它可以能將代碼、文檔等這一切集中到一處,讓用戶一目了然。

例如,我的數據分析社群小夥伴就用Jupyter notebook寫出了他的學習筆記,長這樣,是不是很酷:

所以,你現在明白了這句話是在說什麼了:

Jupyter notebook(http://jupyter.org/) 是一種 Web 應用,能讓用戶將說明文本、數學方程、代碼和可視化內容全部組合到一個易於共享的文檔中。

Jupyter Notebook 已迅速成為數據分析,機器學習的必備工具。因為它可以讓數據分析師集中精力向用戶解釋整個分析過程。

Jupyter這個名字是它要服務的三種語言的縮寫:Julia,PYThon和R,這個名字與「木星(jupiter)」諧音。

2.如何安裝 Jupyter notebook?

對於做數據分析這麼有用的神器,不安裝使用下是不是很遺憾?

安裝 Jupyter 的最簡單方法是使用 Anaconda。該發行版附帶了 Jupyter notebook。你能夠在默認環境下使用 notebook。

確保你已經安裝了Anaconda,如果不知道如何安裝的,可以看我之前寫的:

猴子:初學python者自學anaconda的正確姿勢是什麼??

要在 conda 環境中安裝 Jupyter notebook,在conda終端使用命令(以下所有命令是指conda的終端Anaconda Prompt):

conda install jupyter notebook

也可以通過python shell的 pip 來安裝:pip install jupyter notebook。

3.如何啟動Jupyter notebook?

啟動 notebook 伺服器,在終端中輸入: jupyter notebook。

伺服器會在你運行此命令的「notebook工作文件夾」中啟動。也就是說後面你操作的任何 notebook 文件都會保存在該目錄下。例如我在下面的C:houzi 下面啟動目錄後,會在該目錄下看到我後面運行的文件。

啟動notebook 伺服器後,在瀏覽器中打開notebook頁面地址:http://localhost:8888

(其中localhost 表示你的計算機,而 8888 是伺服器的默認埠)

如果你同時啟動了另一個 notebook 伺服器,新伺服器會嘗試使用埠 8888,但由於此埠已被佔用,因此新伺服器會在埠 8889 上運行。之後,你可以通過 http://localhost:8889 連接到新伺服器。以此類推。

這裡需要注意的:有的人啟動notebook後, 會遇到下面的問題。

1)出現下面這個報錯,可以不用管,直接關閉右上角插號即可。原因是因為:

2)問題2

解決辦法:

先修改「notebook工作文件夾」

之前在猴子:初學python者自學anaconda的正確姿勢是什麼?? 有聊到notebook工作文件夾,後面你很多的新建的notebook都在該文件夾下,比如我的「notebook工作文件夾」就是自己新建了一個空的文件夾用於存放我的項目:chouzi

但是很多時候默認的「notebook工作文件夾」不是一個空的文件夾,不便於我們的數據分析工作,如何修改你的「notebook工作文件夾」呢?

1)在Anaconda Prompt終端中輸入下面命令,查看你的notebook配置文件在哪裡:

jupyter notebook --generate-config

根據你運行實際顯示的路徑,打開這個配置文件(可以用notepad++軟體打開各種格式的文件),我電腦上是這個文件C:Users用戶.jupyterjupyter_notebook_config.py

ps:Notepad++可以打開各種文件格式,作為一款小巧輕量且強大的編輯工具,也被中國開發者廣泛使用。

2)通過搜索關鍵詞:c.NotebookApp.notebook_dir,定位到下面這行

然後修改成以下你自己的「notebook工作文件夾」(最好是自己新建個空的文件夾,然後路徑修改成這個文件夾的路徑)修改後記得保存文件。

這裡一定要注意哦,要去掉這行前面的#(#在表示注釋掉不起作用),不同操作系統的電腦路徑不一樣,windows是雙斜杠(\),linux是反斜杠(/),Mac路徑最好自己百度下。

3)記得修改後最後要重啟notebook伺服器讓修改生效

4.新手如何快速使用notebook?

0)確保你在Anaconda終端中安裝了以下包:

安裝環境自動關聯:conda install nb_conda

該包可以將conda中創建的環境自動關聯到你的notebook中。

我們可以對應conda中的環境,就知道這些環境對應conda中的環境列表。用 conda env list 就可以列出你創建的所有環境。

其中py2是我在conda中創建的Python2環境名稱,

root和default一樣是默認環境,因為我安裝的是Anaconda3,所以默認環境是Python3。

你會發現環境名稱py3沒有出現在notebook中。解決辦法是按下圖步驟安裝包ipykernel。

(同樣的,在你的py2環境下也要像剛才步驟那樣安裝一次這個包)

完成上面安裝步驟,回到標籤頁「Files」,再新建notebook時,會發現已經關聯了環境名稱py2和py3:

這樣你在notebook中可以輕鬆切換Python2和Python3環境了。

在Anaconda終端運行代碼自動補全命令:conda install pyreadline

什麼是代碼自動補全呢?

後面會介紹,您就等好吧。

1)頂部的3個選項卡

頂部的3個選項卡是:Files(文件)、Running(運行)和 Cluster(集群)。

Files(文件)顯示當前「notebook工作文件夾」中的所有文件和文件夾。

點擊 Running(運行)選項卡會列出所有正在運行的 notebook。可以在該選項卡中管理這些 notebook。

Clusters一般不會用到。因為過去在 Clusters(集群)中創建多個用於並行計算的內核。現在,這項工作已經由 ipyparallel 接管。

2)如何創建一個新的notebook?

像下面圖片中一樣,在右側點擊「New」(新建),創建新的 notebook、文本文件、文件夾或終端。

「Notebooks」下的列表顯示了你已安裝的內核。由於我在 Python 3 環境中運行伺服器,因此列出了 Python 3 內核。你在這裡看到的可能是 Python 2。這裡我點擊Python3。

這樣你就打開了下面的頁面,你會看到外框為綠色的一個小方框。它稱為單元格。單元格是你編寫和運行代碼的地方。以後你就可以在這裡寫你的數據分析代碼了。

在這裡你可以輸入自己人生中的第一行Python代碼Hello world。然後點擊圖中的運行按鈕,會執行你當前所在的代碼,其實我更喜歡用快捷鍵(鍵盤上同時按住ctrl+enter鍵)來執行代碼。

這句代碼的意思是在界面輸出字元串"Hello world!",所以你會看到在下面與輸出結果出來。

運行代碼單元格時,單元格下方會顯示輸出。單元格還會被編號(左側會顯示 In [1]:)。如果運行了多個單元格的話(也就是多塊代碼),這能讓你知道運行的代碼和運行順序。

notebook 中的大部分工作均在代碼單元格中完成。這是編寫和執行代碼的地方。在代碼單元格中可以執行多種操作,例如編寫代碼、給變數賦值、導入包,展示數據分析結果等。在一個單元格中執行的任何代碼在所有其他單元格中均可用。

+ 按鈕用於創建新的單元格

還記得一開始我提到代碼自動補全功能嗎?那麼,什麼是代碼自動補全呢?

比如 我定義了下面的變數。

在後面代碼中用到這個變數是,我只要輸入第一個變數的第一個字母p,然後按下Tab鍵,邊會自動查找到代碼中以p開頭的變數名稱,這可以大幅度提供你寫代碼的效率。

但是要注意:如果你定義的變數想出現在代碼補全里,需要你先把定義該變數的cell運行以後,notebook才能識別它。

2)重命名notebook

你會看到剛才我建的notebook文件名是下面這樣默認的,我想修改成自己喜歡的文件名如何辦呢?

點擊「File」-&>Rename,可以對notebook文件進行重命名,這裡我命名成『Helloworld』

同時,你可以在當前運行notebook伺服器的「notebook工作文件夾」下看到創建的notebook,文件名後綴是ipynb。

(其實Notebook 就是個擴展名為 .ipynb 的大型 JSON 文件。)

點擊下面的保存按鈕,可以保存你的notebook文件。但 notebook 也會定期自動保存。

3)關閉 notebook文件

通過在伺服器主頁上選中 notebook 旁邊的複選框,然後點擊「Shutdown」(關閉),你就可以關閉各個 notebook。

但是,在這樣做之前,請確保你保存了工作!否則,在你上次保存後所做的任何更改都會丟失。同時如果不保存,你下次運行 notebook 時,你還需要重新運行代碼。

4)如何共享你的notebook?

點擊File-&>Download as,你可以選擇多種格式下載你的notebook。一般我都會根據下面的用途來選擇不同的下載格式:

1)如果我想和客戶分享我的數據分析成果,我會選擇將notebook下載為HTML文件。

2)如果我希望將自己的數據分析成果和代碼嵌入到項目中,比如為藥店管理系統做個數據分析子模塊,我就會選擇Python(.py)模塊,這可以將我的代碼融入項目中,成為子模塊,方便和其他開發人員共同完成任務。

3)如果要在博客或文檔中使用 notebook,我就選擇Markdown格式。

4)關閉Jupler notebook伺服器

通過在終端中按兩次 Ctrl + C,可以關閉整個伺服器。再次提醒,這會立即關閉所有運行中的 notebook,因此,請確保你保存了工作!

關閉notebook伺服器後,下次啟動再打開notebook,當你繼續在該notebook中寫代碼時,發現之前的變數無法訪問了。需要你在該notebook的Kernerl選項卡中選擇「Run All」重新編譯下之前的代碼。

如果你實踐了上面的每一步,恭喜你,已經入門學會了 notebook。上面的命令也不需要你記住,只有你後面經常使用notebook,自然就熟練了。想想,你每天說話,會記住每個單詞嗎?當然不會,用的多了自然在大腦中就形成了記憶,而所謂的新技能學習,無非也是熟能生巧。


感覺幾個答案圖片很多但是沒有說到核心重點。

jupyter notebook簡單說就是類似mathematical的notebook,這個概念也不是很新了。

最突出的功能在我看來是你調debug代碼的時候可以隨時隨地print,在任何地方進行操作,查看各種可能的bug,自帶的gdb debug表示不想用。。

然後接下來就是屬於ipython的功能了,就是在一個對象後 tab 直接顯示你可以進行的操作,比如member function啊, member data.

再接下來的功能就是網頁內print 圖片了。非常實用。

比較好的應用就是你拿它去生成一個 教學文檔,學生們可以隨時改裡面的代碼,你做了什麼功能也非常清晰。 而且同時支持LATEX,你可以寫一個特別好看的文檔,像一個自帶代碼的MINI PAPER一樣。

總而言之jupyter notebook非常適合DEBUG 和教學。


實際寫代碼的時候我很喜歡用IDE或者編輯器,效率更高。notebook更多用於截取片段代碼,保存變數,執行結果,來驗證自己的思路和省去重新運行的時間。

再加上markdown的支持,可以方便的向別人顯示自己的想法。

Notebook一個一個cell分布太散,我更喜歡模塊化,所以寫代碼用ide,notebook需要話無謂的時間在整理上,代碼提示補全也不強,效率太低。


原名Ipython notebook,相當於專為數據處理加強的IDE,通過瀏覽器訪問使用本地或者遠端的Ipython,利用瀏覽器的一些特性,增強了lpython的可視化輸出。


推薦閱讀:

国外学data science也就是大数据这种专业回国是不是不好找工作?
數據分析師和數據科學家有何區別?
數據科學(Data Science/Analytics)出身,可以在諮詢行業做些什麼?
數據科學家 (Data Scientist) 的職業發展路徑是什麼?
大數據熱潮是泡沫么?

TAG:Python | 數據科學家 |