最近由於項目需要,開始學習python,然后發現一個非常有用的python交互式編輯器,非常容易上手而且非常有用和實在,本博文是對學習jupyter notebook的一個匯總和記錄,與大家一起分享!下面的內容是針對ubuntu 系統的,當然,jupyter notebook在windows也是支持的。
一、jupyter notebook是什么
官網的介紹是:Jupyter Notebook是一個Web應用程序,允許您創建和共享包含實時代碼,方程,可視化和說明文本的文檔。 用途包括:數據清理和轉換,數值模擬,統計建模,機器學習等等。
簡單的介紹就是:Jupyter Notebook是Ipython的升級版,而Ipython可以說是一個加強版的交互式 Shell,也就是說,它比在terminal里運行python會更方便,界面更友好,功能也更強大。怎么強大法,往下看就知道了。
二、jupyter notebook的安裝和打開
安裝非常簡單,只需要在終端輸入:
pip install jupyter
打開jupyter notebook 也只需要在終端輸入:
jupyter notebook
運行上面的命令之后,你將看到類似下面這樣的輸出:
如上圖,它打開了一個端口,並且會在你的瀏覽器中打開這個頁面,主目錄是圖中的那個directory(可能第一次打開沒有這個目錄)。
三、使用
1、打開一個新文檔
在主頁面的右上角點new即可新建一個你想要的文件類型。
如上圖,jupyter也可以打開一個terminal,還可以作為一個text文本編輯器,功能明顯是比terminal強大了。
下面的Notebooks類型除了python 也是可以加入其他類型的文檔的,具體方法百度一下就好。
2、python編輯器介紹
點擊python2后會出現一下界面:
稍微介紹一下notebook 界面的組成部分1)notebook 的名稱2)主工具欄提供了保存、導出、重載 notebook,以及重啟內核等選項3)快捷鍵4)notebook 編輯區
最下面的哪個 In [ ]: 的框叫做單元格,你可以把你的代碼分成一段段的單元格輸入,然后可以逐個單元格地運行。注意,這個功能是非常友好的,有時候只修改了中間的一小段代碼,又不想全部代碼都要重新運行的時候這個功能就非常有用了。另外,單元格是可以改變順序的。而且可以輸出圖片和繪圖!非常強大吧!
這些只要稍微嘗試一下就懂的,下面主要介紹一些常用的技巧
**注意,jupyter notebook 是支持 TAB 鍵自動補充單詞的,再一次展示了其強大友好的一面!
A.修改文檔名稱
方法一:點上圖的Untitled
方法二:點File,再點rename
B.導出文檔
步驟:點File,再點Download as
發現里面支持好幾種格式的導出,第一個ipynb是notebook的格式,是一種類json的格式保存,其他的建議你們都試一試,你會感到非常驚喜的。
C.保存
Ctrl + S 快捷鍵的可以保存你的文檔的,默認是保存為ipynb,保存在你的主目錄下!
D.單元格格式
注意到快捷鍵欄中有一個code的下拉框,點開發現有幾個選項:
這里介紹一下
- Code格式就是正常的python代碼格式
- Markdown的一個text文檔編輯格式,就像在word里編寫一樣
- Heading就是給Markdown的句子設置標題等級,像word的標題一,標題二...
- Raw NBConvert 沒用過不了解,可以自行百度或者看官網介紹
下面舉例說明一下
選擇一個空的單元格,code下拉框選擇Heading,會出現一個不同類型的 cell:
改變單元格類型時彈出消息中有解釋,后面那個單元格以 # 標記開頭,意味着這是一個一級標題。如果需要子標題,可以使用以下標記表示:
# : 一級標題## : 二級標題### : 三級標題...
輸入內容后再運行一下(快捷欄里有),會出現類似下面的情況:
我一共輸入了三級標題,點其中一個,你會發現它的code下拉欄顯示是markdown類型
你以后代碼里print 的內容都是以markdown的格式顯示的。
E.快捷鍵
常用的快捷鍵是:
- Ctrl + Enter: 執行單元格代碼
- Shift + Enter: 執行單元格代碼並且移動到下一個單元格
- Alt + Enter: 執行單元格代碼,新建並移動到下一個單元格
這幾個快捷鍵都是非常常用的。
F.歷史輸入和輸出變量
與標准 Shell 類似,IPython 中也可以通過 _ 和 _ _ 訪問上一次和上上一次的輸出。
當你寫的單元格多了,肯定會注意到,IPython 中每一次的輸入輸出都有序號。你可以通過一下方法訪問這些輸入和輸出:
- _:訪問上一次輸出
- __:訪問上上一次輸出
- _X:訪問歷史 X 行輸出
- _iX:訪問歷史 X 行輸入
其中小寫字母 “i”,代表 “in”。
四、外部功能
上面講的是jupyter 的一些使用方法和技巧,其實它還有很多強大的外部功能的,下面給大家介紹一下。
A.魔術命令
在 IPython 的會話環境中,所有文件都可以通過 %run 命令來當做腳本執行,並且文件中的變量也會隨即導入當前命名空間。
即,對於一個模塊文件,你對他使用 %run 命令的效果和 from module import * 相同
這種以 % 開頭的命令在 IPython 中被稱為魔術命令,用於加強 shell 的功能。
常用的魔術命令有:
%quickref | 顯示 IPython 快速參考 |
%magic | 顯示所有魔術命令的詳細文檔 |
%debug | 從最新的異常跟蹤的底部進入交互式調試器 |
%pdb | 在異常發生后自動進入調試器 |
%reset | 刪除 interactive 命名空間中的全部變量 |
%run script.py | 執行 script.py |
%prun statement | 通過 cProfile 執行對 statement 的逐行性能分析 |
%time statement | 測試 statement 的執行時間 |
%timeit statement | 多次測試 statement 的執行時間並計算平均值 |
%who、%who_ls、%whos | 顯示 interactive 命名空間中定義的變量,信息級別/冗余度可變 |
%xdel variable | 刪除 variable,並嘗試清除其在 IPython 中的對象上的一切引用 |
!cmd | 在系統 shell 執行 cmd |
output=!cmd args | 執行cmd 並賦值 |
%bookmark | 使用 IPython 的目錄書簽系統 |
%cd direcrory | 切換工作目錄 |
%pwd | 返回當前工作目錄(字符串形式) |
%env | 返回當前系統變量(以字典形式) |
對魔術命令不熟悉的話可以通過 %magic 查看詳細文檔;對某一個命令不熟悉的話,可以通過 %cmd? 內省機制查看特定文檔
B.添加插件
1)側邊欄目錄導航
當文章內容非常長的時候,前后找內容,很麻煩,不如加一個sidebar,方便導航方法:https://github.com/ipython-contrib/IPython-notebook-extensions/tree/master/nbextensions/usability/toc2
2)隱藏代碼按鈕
有時候,希望代碼可以隱藏,這樣子文檔看起來,就會干凈一些
點擊按鈕,就可以隱藏所有的代碼,具體做法:http://stackoverflow.com/questions/27934885/how-to-hide-code-from-cells-in-ipython-notebook-visualized-with-nbviewer當然,還有更多的extention可見https://github.com/ipython-contrib/IPython-notebook-extensions/
參考【https://www.douban.com/review/7890354/】
C.運行python文件
利用jupyter的cell是可以運行python文件的。
方法一:
%run file.py
方法二:在unitx command前面加入一個感嘆號“!” ,如:
!python myfile.py
D.導入外部代碼
比如有一個test.py文件,需要將其載入到jupyter的一個cell中
在需要導入該段代碼的cell中輸入
%load test.py #test.py是當前路徑下的一個python文件
shift + enter運行后,%load test.py被自動加入了注釋符號#,test.py中的所有代碼都被load到了當前的cell中
或者從從網絡load代碼到jupyter
在cell中輸入%load http://.....,然后運行該cell,就會將load后面所對應地址的代碼load到當前的cell中;
五、其他技巧
1)更改Jupyter notebook的工作空間(主目錄)
Jupyter的工作空間在其配置文件ipython_notebook_config.py中。
ipython_notebook_config.py文件在~/.jupyter/下
如果找不到那就在終端輸入:
然后再
Ctrl + F 找到下面這句按下面的格式,輸入你想要的目錄路徑即可
# The directory to use for notebooks.這決定了jupyter啟動目錄 c.NotebookApp.notebook_dir = u'/path/to/your/notebooks'
2)自定義快捷鍵
這個就直接參考官方文檔吧:http://nbviewer.jupyter.org/github/ipython/ipython/blob/3.x/examples/Notebook/Custom%20Keyboard%20Shortcuts.ipynb
六、總結
總的來說,Jupyter notebook 是一款非常優秀的交互式編輯平台,提供了分享,演示,編輯等功能.作為學習的記錄者,方便你隨時撿起學習的進度,增量式地前進。
希望這篇博文能對剛接觸jupyter 的朋友有所幫助!
另外,你也可以考慮通過Anaconda 安裝包來安裝jupyter,因為這個是集合包,里面包含了python3,還有各種機器學習的一些庫,功能強大,安裝簡便。
七、參考
【1】官網安裝:https://jupyter.readthedocs.io/en/latest/install.html
【2】jupyter使用小結
【3】Jupyter Notebook 快速入門(上)
【4】jupyter notebook 各種用法記錄(陸續更新)