Python - jupyter notebook互動式平台介紹

陳冠億 Kenny
企鵝也懂程式設計

--

這篇文章,主要講述如何安裝並操作jupyter notebook。這個平台在Python界,可以說是非常知名,最大的特點就在於說,它除了提供互動式的方式,還提供了視覺化的產生,使得我們執行程式可以方便我們快速看到結果。

介紹 jupyter notebook

jupyter notebook裡面的實現,其實是採用IPythonIPython是一種交互式解釋器,比起Python原生的交互式解釋器,多了不少功能,除了支援變數自動補全,自動縮排,內建了許多很有用的功能和函式,通常都會用在科學計算及資料視覺化。而jupyter notebook可以想成是web版的IPython,此外它現在也逐漸支援其他語言,而不是只有Python

安裝並啟動 jupyter notebook

在安裝前,記得主機上已經要有Python3的環境,因為我們要透過pip(Python的管理套件工具),來進行安裝。此外,建議先將pip的版本先更新到最新版,避免出錯。

更新pip

pip install --upgrade pip

安裝jupyter notebook

pip install jupyter

啟動jupyter notebook

jupyter notebook

這個命令它會自動開啟一個local端的jupyter notebook,或是它會在terminal上,列出以下網址:

http://localhost:8888/?token=8ab82a55ab3d3e0613a16605f61aeeb54370c184bf83af56

也可以透過點擊這個網址來開啟。

畫面如下:

這邊會列出你當前termial目錄下有哪些檔案,所以滿方便的。

接著可以點擊右邊的New,來產生副檔名為.ipynb的檔案,透過這個檔案我們可以在裡面撰寫Python的程式碼

畫面如下:

選擇Notebook下的Python版本,就可以產生.ipynb的檔案,並且使用哪個版本的Python環境。

新增之後畫面如下:

基本上首先要理解的就是:

在jupyter notebook裡面,執行程式碼是以區塊去執行的,通常程式碼會分好幾個區塊,每個區塊做不同的事情,然後就可以每個區塊去看執行結果,也可以一次執行多個區塊來看多個執行結果。

例如:

我們就可以區塊內撰寫python的程式碼,當我們寫好後,只要點擊要執行的區塊,在按快捷鍵:shift+enter

便可在區塊的下方秀出你的程式碼的執行結果。

這邊可以特別注意,假設你想秀出結果,放在區塊的最後一行程式碼,即使不寫print函式,也會秀出來:

jupyter notebook 特殊用法

這邊介紹jupyter notebook 一些特殊用法,及常見的快捷鍵

  1. 利用?這個字元,放在函式前面,可以取得該函式的document,及相關用法。可以發現下方會出現,這個函式的dotstring,從這可以看出這個函式的功用是什麼,方便我們去做查詢。也可以對程式碼裡面產生的變數進行使用,就可以該變數的型態,以及裡面資料值及長度:

再來可以創建自定義的函式,而如果有在程式碼中撰寫該函式的dotstring,就會在之後看到自己定義的dotstring

2. 可以透過??,取得該函式的source code。

例如,如果我們在jupyter notebook中,定義了函式,再透過??去存取會得到以下的結果:

以剛剛的say_hello函式為例子,可以發現下方會取得該函式的source code。但是要注意這不能用在一些非python建立的函式,因為主流python底層是用C語言實現,所以有些函是底層是C去完成的,使用??的效果會跟?一樣。

3. TAB鍵的功用,可自動產生相關的函式,方便使用

直接看例子:

假設現在你想要用Python的list相關的函式,卻忘記有哪些可以用了,如果我們是用像是Pycharm這種IDE,當然會自動跳出上面圖片的功能,而在jupyter中,就是在.後面點擊TAB鍵,就會產生這樣的效果。

當然也可以用成先輸入幾個字,假設你只記得你要用的函式錢幾個英文字母而已的話:

如果要取得內部屬性,可在前面加_,即可搜尋到:

此外,也能用在import package的時候,例如:

就可以知道當前的python環境有哪些模組可以使用。

4. 常用的快捷鍵,幫助開發速度。

魔術快捷鍵

官方稱這個為magic commands,其實滿多的,詳細的話可以去看官方文件,這邊只講兩個比較常用的。

  • %time

在做一些科學運算的時候,常常都會在乎運算時間的長短,在這邊最耳熟能詳的套件就是numpy,它的數學運算的性能相對於python內建的套件的性能就相當的優秀。

直接看例子:

Wall time可以把它想成是這行程式碼花了多少時間,因此透過%time,它可以給我們這一行程式碼運行花了多少時間,可以知道numpy的sum跟內建的sum,有一定時間上的差距。

  • %timeit

直接看例子:

這邊我們可以知道,它給出的是每個loop中,平均會花費多少時間,簡單來說,它會自動多次執行該程式碼,最後產生精確平均會花的時間。

一般快捷鍵

  1. 這邊講解比較常用的:
  2. Shift+Enter:運行該cell,並跳到下一個cell
  3. Ctrl+Enter:運行該cell,不跳到下一個cell
  4. Esc:對該cell,進入編輯模式,可執行其他快捷鍵命令,或可選擇是否要code模式,還是markdown模式。按下M轉成markdown,按下Y轉成code模式。
  5. 方向鍵:按下Esc之後就可透過方向鍵上下來選取cell,也可用英文字母的KJ來代表上下。
  6. A:按下Esc之後,在按A,就可在當前的cell上方插入新cell
  7. B:按下Esc之後,在按B,就可在當前的cell下方插入新cell**。
  8. X:按下Esc之後,在按B,就可刪除當前的cell

剩下的部分可參考官方文件,或是參考這個網址:

http://opus.konghy.cn/ipynb/jupyter-notebook-keyboard-shortcut.html

總結

jupyer notebook對於視覺化或是資料處理及計算都滿有幫助的,對新手初學Python,也有一定的幫助,不過如果是寫大型的專案,我還是喜歡用PyCharm,之後再發文講解PyCharm,堪稱開發python的神器!

之後會利用jupyter notebook的環境帶來numpy、pandas、sklearn等相關資料處理套件的講解

歡迎來看我的個人部落格: https://kennychen-blog.herokuapp.com/

--

--