Jupyter-NoteBook-你應該知道的N個小技巧
不斷更新
部分內容來自於翻譯整理
-
Jupyter Notebook可能是當今最常用的資料科學工具
寫Python程式碼很多人會告訴你要用Pycharm,但那是開發Python專案用的, 那種由成百上千個檔案組成、包含數萬行程式碼的專案必須要很專業的複雜工具才行。
但如果你的目的是資料分析、演算法研究等方面的工作,那麼Jupyter Notebook 最適合你,因為它足夠簡單,讓你可以專注於資料和演算法的邏輯而不是工具。
-
JupyterNotebook不僅可以寫程式碼還能輸出影象、表格等
你可以用用下面一些程式碼實驗(程式碼來自天池實驗室):
%matplotlib inline import numpy as np import matplotlib.pyplot as plt from scipy.special import jn from IPython.display import display, clear_output import time x = np.linspace(0,5) f, ax = plt.subplots() ax.set_title("Bessel functions") for n in range(1,10): time.sleep(1) ax.plot(x, jn(x,n)) clear_output(wait=True) display(f) plt.close()
得到如下圖所示:
image.png
常用的繪圖分析工具有Matplotlib、Seaborn、plot.ly。
-
使用Anaconda來安裝最省事
如果你要快速開始Python程式設計,直接下載Anaconda是最簡單的,它包含了你所需要的一切,甚至連Python都不需要單獨安裝。
開機,下載和安裝Anaconda,開啟Anaconda navigator就看到Jupyter notebook了。
Anaconda3.5.2:
ofollow,noindex"> 百度網盤下載(非VIP較慢)
Windows-x86_64.exe" target="_blank" rel="nofollow,noindex"> 官方下載(Windows電腦使用)
MacOSX-x86_64.pkg" target="_blank" rel="nofollow,noindex"> 官方下載(蘋果電腦使用) -
更省事的是阿里雲天池Notebook實驗室
這是一個線上版的Notebook,什麼都不需要安裝就能開始編碼和執行!
唯一麻煩的就是需要你註冊並實名認證。
你在網頁裡編寫Python程式碼,然後免費在阿里雲伺服器上執行並返回結果。你寫的程式碼也存在伺服器上,不用再擔心會丟失了,它甚至包含了程式碼版本管理功能!
已知的確缺點有:
- 不能隨意的安裝第三方功能模組。不過它已經自帶了很多,大多數情況都足夠了。
- 不能安裝Notebook外掛。基本上也不是問題,沒事誰也不折騰這個。
- 要命的是你不能像控制自己的電腦一樣控制遠端伺服器,當你在爬取某個網站資料的時候,網站發現你的IP(阿里雲伺服器的IP)訪問不正常要求在瀏覽器內做人工識別字符驗證,這時候你就無助了。——如果在你自己電腦上就只要開啟瀏覽器操作一下就OK了。
-
Ipython是Jupyter的前身
Jupyter專案是從Ipython專案演進過來的,所以當你看到儲存的檔案是
.ipynb
時候不要奇怪,就是ipython notebook的意思。實際上以後在很多地方都會看到Ipy字樣。 -
JupyterLab是Notebook的加強版
在Anaconda navigator裡面還有一個JupyterLab。Lab在Notebook基礎上增加了更多的功能,如果你已經使用過一段時間的Notebook,那可以試試看Lab。
-
Shift+回車執行單元程式碼
快速執行並輸出結果,並跳轉到下一個單元。
-
程式碼自動完成
在程式碼頂部新增
%config IPCompleter.greedy=True
這一行並且shift+回車執行,對於接下來執行過的內容都會被列入自動提示中。按Tab鍵彈出自動提示
如下圖,輸入my然後Tab鍵就彈出上面自定義的兩個變數名,然後按回車直接輸入
myCount
,按向下箭頭鍵再回車就輸入myNum
。image.png
import
匯入的功能模組也可以提示。比如下圖,輸入requ
然後按tab就自動補全輸入requests
(因為已經匯入,並且是唯一的,而剛才的myCount
和myNum
都是my
開頭)。
輸入到requests.
的時候按tab就會彈出requests
包含的所有功能命令,繼續輸入g
就得到下圖的情況。
image.png
-
不要把程式碼都寫在一個單元cell裡!
這非常重要!
但也不要每行一個cell...
合理安排,一個cell就是一個小的邏輯單元,這樣既可以理清思路,又方便單獨執行每個cell方便測試尋找問題。
推薦把相關的設定變數都集中放在最上面單獨一個或幾個cell,這樣以後使用時候可以集中修改,不影響程式碼邏輯。
比如下圖中的程式碼,以後修改只要修改兩個變數
num1、num2
就可以直接執行得到結果。image.png
def
單獨拿出去作為cell內容,比如下面把求整體方差avri
分拆出了兩個def
函式,avg
求平均數,sqr
求兩數差的平方。(程式碼僅供示意)
image.png
-
Cell不僅可以寫程式碼,還能Markdown
Markdown是用來寫文章的,比如這個簡書文章就是用markdown語法寫的。
新建cell可以選markdown用來寫程式碼註釋。
寫起來是這樣的:image.png
image.png
-
更改預設開啟的專案
預設Notebook總是開啟電腦中我的文件目錄,以下方法可以讓它開啟指定的目錄。
開啟命令列工具輸入
jupyter notebook --generate-config
然後會返回一個地址,找到它(可能是隱藏檔案),用寫字板開啟那個檔案
jupyter_notebook_config.py
:image.png
c.NotebookApp.notebook_dir = '/Users/zhyuzh/Desktop/Jupyter'
然後重新開啟Jupyter Notebook就會預設開啟這個檔案夾了。蘋果電腦顯示隱藏檔案的命令:
defaults write com.apple.finder AppleShowAllFiles -bool YES
蘋果電腦下複製當前資料夾路徑快捷鍵
Command+Option+C
-
擴充套件外掛
外掛可以讓Notebook變得更好用一些。一般情況我們不需要安裝外掛,等你使用久了再慢慢了解。
非官方貢獻版外掛更多更容易安裝些,因為可以一次都裝上,要用哪個再開啟哪個。
安裝命令:
conda install -c conda-forge jupyter_contrib_nbextensions
執行後可能稍等一下才有反應,根據提示按y。
然後再啟用,比如啟用collapsible_headings:
jupyter nbextension enable collapsible_headings/main
注意
/main
是必須的。collapsible_headings
外掛可以讓Notebook把一個cell摺疊起來,在cell選單下出現insert head cell
字樣:image.png
這個外掛在JupyterLab下面好像不能用。不過Lab自身就可以雙擊摺疊一個cell,比這個更方便些。
collapsible_headings/main
其實是指資料夾collapsible_headings
下的main.js
檔案。所有可用的資料夾名稱都可以在電腦裡搜尋nbextensions
資料夾找到。蘋果電腦的位置類似/anaconda3/pkgs/jupyter_contrib_nbextensions-0.5.0-py36_0/lib/python3.6/site-packages/jupyter_contrib_nbextensions/nbextensions
JupyterNoteBook的外掛本質都是NodeJs的npm外掛。如果你瞭解nodejs那麼很容易搞明白它的原理。 -
格式化自動美化程式碼
程式碼整齊很重要!
對於Python來說混亂的程式碼格式可能是致命的!
這裡介紹安裝
code-pretty
自動格式化外掛,先執行命令開啟:jupyter nbextension enable code_prettify/code_prettify
依照 官方說明 還需要執行另外一個命令安裝必要的第三方功能模組:
conda install yapf
然後就可以看到Notebook如下圖出現一個小錘頭工具。點選它就能把當前cell的程式碼自動格式化變整齊了,也可以使用快捷鍵
Ctrl+L
(蘋果下也是ctrl不是Command)。image.png
-
用
?
輸出幫助提示比如下圖:
image.png
-
執行或載入外部Python檔案
使用
%run
程式碼可以直接外部的執行.py檔案,比如在Notebook資料夾內有一個a.py
檔案:aa='haha' print(aa)
那麼可以用下面程式碼直接在Notebook內執行它(注意這裡的
./
表示在同一資料夾下)%run ./a print('>>'+aa)
image.png
%load
則直接把程式碼讀進來(下面是%load ./a
執行的結果):
image.png
-
公式編輯器LaTeX
Notebook的Markdown單元是支援LateX公式編輯的,比如輸入
\\( P(A \mid B) = \frac{P(B \mid A) \, P(A)}{P(B)} \\)
執行得到下圖:image.png
-
可以儲存為.py或pdf檔案
從
file
選單可以儲存為多種格式。