Python - jupyter notebook 互動式平台介紹

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

介紹 jupyter notebook

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

安裝並啟動 jupyter notebook

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

更新 pip

1
pip install --upgrade pip

安裝 jupyter notebook

1
pip install jupyter

啟動 jupyter notebook

1
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. Shift+Enter:運行該 cell,並跳到下一個 cell
    2. Ctrl+Enter:運行該 cell,不跳到下一個 cell
    3. Esc:對該 cell,進入編輯模式,可執行其他快捷鍵命令,或可選擇是否要 code 模式,還是 markdown 模式。按下 M 轉成 markdown,按下 Y 轉成 code 模式。
    4. 方向鍵:按下 Esc 之後就可透過方向鍵上下來選取 cell,也可用英文字母的 KJ 來代表上下。
    5. A:按下 Esc 之後,在按 A,就可在當前的 cell 上方插入新 cell
    6. B:按下 Esc 之後,在按 B,就可在當前的 cell 下方插入新 cell**。
    7. 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 等相關資料處理套件的講解 ^ 口 ^。