一、Jupyter介紹
Jupyter Notebook是以web交互式的編程接口,是IPython notebook的升級版本。主要是針對python,另外支持運行 40 多種程式語言。Jupyter可以在個人機器開發,也可以連接到集群中使用分布式計算引擎spark等以及資料庫(mysql/hive/hdfs)。
Jupyter相對於其他python編程工具來說,除了通常的新建、刪除、更改、下載編程文件外,還支持在線編程運算可幫助持續開發,特別在企業中有些項目需要持續很長時間的開發,每天下班後關閉jupyter,只要伺服器的kernel不關閉,jupyter會保存好開發時的數據緩存和可視化結果,第二天繼續開發,而不用又從頭再運行,再配合支持markdown的功能,使得jupyternotebook方便記錄開發過程和教學。下面對特徵工程的教程就是利用了在jupyternotebook中使用markdown生成的,並且支持對文章的內容字體高亮。
二、jupyter安裝
Jupyter有多種方式進行安裝,一種比較直接的方式是直接下載安裝anaconda,裡面有自帶的jupyter notebook。
第二種是使用pip來安裝,pip install jupyter。
另外如果是想在獨立的python環境中使用jupyter的話,在linux系統中使用virtualenv構建虛擬環境,如果在windows下已經安裝了anaconda,可以使用conda創建特製python環境,conda create --name your_env_name python=2.7。
啟動方式可以直接在anaconda找到jupyter notebook啟動
或在終端直接輸入jupyternotebook調用,不過需要注意的是jupyter會根據當前啟動路徑當做開發路徑,如果你想在D:\xxxx\目錄下進行開發,需要先進入到路徑下,再調用jupyternotebook。
三、jupyter使用
3.1 啟動jupyter notebook
進入jupyter界面如下:
紅色部分Python2就是新建一個notebook,另外Terminals Unavailable是啟動終端,這裡linux和windows系統略有不同,由於windows下不支持類似linux的tty(控制終端),因此無法使用,Linux下啟動效果如下:
Jupyter能夠下載文件,上傳文件,但是無法在兩個文件夾之間進行複製和移動,一種方式是把文件先下載下來,然後在另外文件夾中上傳,比較麻煩,如果配合jupyter中的終端就很方便移動,複製和打包文件了。
3.2 jupyter的使用功能
jupyter的基本單元是編程cell組成,也就是我們看到的In[ ]:
Jupyter有三種類型的cells:code cells,markdown cells,raw cells,常用的是code cells和 markdown cells類型。
Cells狀態分為命令模式和編輯模式,Enter進入編輯模式,ESC進入命令模式,命令模式和編輯模式下支持很多操作快捷鍵,非常好用。
常用命令模式快捷鍵:
y: 單元進入代碼狀態
m: 轉入markdown狀態
r:轉入raw狀態
a: 上方插入新單元
b:下方插入新單元
x:剪切選中單元
c: 複製選中單元
shift-v:粘貼到上方單元
v:粘貼到下方單元
d,d(連續按兩次d):刪除選中單元
z:恢復最後刪除單元
ctrl+Enter:運行本單元,兩種模式都適用
shift+Enter:運行本單元,並跳到下個單元,兩種模式都適用
alt+Enter:運行本單元,並在下方插入新單元,兩種模式都適用
常用編輯模式快捷鍵:
Tab:代碼補齊或縮進
Shift+Tab:調用方法提示,非常有用,在調用包中函數時,對於函數中的使用說明和相關參數配置,按兩次shift+Tab可獲取詳細的方法提示。
Ctrl+]:縮進
Ctrl+[ : 解除縮進
Ctrl+A: 全選
Ctrl+Backspace:刪除光標前面本行所有的內容
Ctrl+Delete:刪除光標後本行所有的內容
Shift+Home:往前選取本行所有內容
Shift+End:往後選取本行所有內容;
3.2.1 Markdown
Jupyter提供的markdown是一個非常實用的功能,有了markdown可以將寫代碼和內容編輯非常好的結合,特別代碼內容說明,markdown是一種純文本標記語言,滿足標題,公式,字體加粗,顏色甚至流程圖和表格的內容編輯;例如,下圖中是使用markdown編寫的,能夠生成我們想要的公式和字體顏色。
一些簡單的用法如下,編輯好之後使用ctrl+enter運行結果:
更多內容可以了解markdown相關教程。(公眾號回復markdown或者進QQ群:319571120即可免費下載)
3.2.2 Code Cells
Code模式下,除了一般的python代碼編輯外,jupyter還支持一些其他的程式語言,如R,Julia,bash等。不過需要使用magic單元。Magic單元分為兩種,一種是line magics,另外一種cell magics。Line magic是通過在前面加%,表示magic只在本行有效。
Cell magics:通過在前面加%%,表示在整個cell單元有效。比如下圖中使用%%bash,產生了linux下的shell環境(window下不支持,不過可以使用%%cmd),這樣就可以運行pwd和ls命令了。
其中一些比較常用的magic:
%matplotline inline在jupyter內列印圖片;
%load:將本地py文件代碼導入進來,例如 %load test.py
%run:運行本地代碼,利用這個magic,我們可以把一些頭文件,基本設置,共同函數寫在不同的notebook內,用的時候運行一下就可以了。
例如下面,將公共的函數寫在common_import.ipynb中,一些導入函數的配置文件存在utils.ipynb中,需要的時候使用%run直接運行一下,就可以把公共函數和環境配置好了。
這樣可以將代碼寫成不同的模塊,而不是全部寫進一個notebook。%time:統計代碼運行的時間,當然還有更多有趣的一些magic屬性來方便我們的工作。
四、拓展功能
上面已經將jupyternotebook的基本功能和用法都涉及,但是直接工作的話感覺還是缺一點東西,類似下圖這樣能夠生成notebook的內容目錄和點擊快速定位的功能。
當在notebook中編寫了大量代碼的時候,如果想要快速的定位到代碼塊或者給編輯內容的各級標題生成標題號,可以使用jupyter中的延伸功能模塊,Jupyter Notebook extensions來完成這部分工作,Jupyter Notebook extensions可以通過conda安裝,調用conda install -c conda-forge jupyter_contrib_nbextensions,如果conda安裝不成功的話,可以嘗試使用pip安裝,不過需要兩步工作:
1. pip install jupyter_contrib_nbextension
2. jupyter contrib nbextension install --user
安裝完成後重新打開jupyter會發現多了Nbextensions項
點擊Nbextensions後能夠看到下圖的界面:
通過勾選Table of Contents(2),能夠生成notebook的瀏覽目錄,如果希望在頂部生成目錄的話,還需要點擊Table ofContents下勾選下圖中的項。
最終的效果如下:
至此jupyter的安裝,常用用法和技巧就基本講完了,當然jupyter的功能要不止這些,如果有興趣可以繼續拓展,當時對於日常工作使用的話,這些基本就夠了。
(如需更好的了解相關知識,歡迎加入智能算法QQ討論群:319571120,或者在「智能算法」公眾號發送「QQ群」,自動加入)