-
多行輸出
在Notebook的中開頭cell中添加以下代碼可以實現多行輸出:
from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = 'all' #默認為'last'
例如:

如果需要一勞永逸的在每個文件中自動實現這個功能,可以在macOS的/Users/your_user_name/.ipython/profile_default/或者windows的C:\Users\your_profile.ipython\profile_default文件夾下創建ipython_config.py文件。(mac下你可以在終端進入這個目錄touch ipython_config.py來創建)。
然后打開ipython_config.py文件,添加以下兩行:
c = get_config() c.InteractiveShell.ast_node_interactivity = "all"
保存,重啟Notebook后生效。

感謝離宮2提示這個技巧。
-
module 'numpy' has no attribute 'version'
import pandas as pd
就報這個錯誤,原因未知,解決方法就是-f強制重新安裝:
conda install -f numpy
conda install -f pandas
-
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:
百度網盤下載(非VIP較慢)
官方下載(Windows電腦使用)
官方下載(蘋果電腦使用) -
更省事的是阿里雲天池Notebook實驗室
這是一個在線版的Notebook,什么都不需要安裝就能開始編碼和運行!
唯一麻煩的就是需要你注冊並實名認證。
你在網頁里編寫Python代碼,然后免費在阿里雲服務器上運行並返回結果。你寫的代碼也存在服務器上,不用再擔心會丟失了,它甚至包含了代碼版本管理功能!
阿里雲天池Notebook
已知的確缺點有:- 不能隨意的安裝第三方功能模塊。不過它已經自帶了很多,大多數情況都足夠了。
- 不能安裝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
但是每次都按【Tab】按鍵也並不方便,因為如果裝了Jupyter notebook的擴展插件包(參考下面擴展插件部分),只要用下面的命令來開啟自動完成即可。jupyter nbextension enable hinterland/hinterland
,成功OK之后重新打開Jupyter Notebook,在輸入代碼的同時就會實現自動提示了。
-
不要把代碼都寫在一個單元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
shift回車運行后是這樣的(雙擊可以返回到修改模式):
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
Windows電腦下如果失敗,請修改Jupyter Notebook的快捷方式,去掉【屬性-目標】中的" %USERPROFILE%" 部分,並確保
c.NotebookApp.notebook_dir='D:\\temp\\'
,后面的目錄必須使用雙斜線。 -
顯示全部在運行的Notebook
命令jupyter notebook list
列出全部端口上運行的notebook服務,這里也會顯示完整戴token的瀏覽器地址。
命令jupyter notebook stop 8898
關閉特定端口上的服務,Windows下如果失敗的話還是用任務管理器吧,如果任務管理器也找不到它的話,其實它就已經被關閉了,只是windows沒更新。
-
擴展插件
插件可以讓Notebook變得更好用一些。一般情況我們不需要安裝插件,等你使用久了再慢慢了解。
官方Github插件主題列表
非官方contrib貢獻插件列表
非官方貢獻版插件更多更容易安裝些,因為可以一次都裝上,要用哪個再開啟哪個。
安裝命令:
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
關於LaTeX語法可以在簡書里搜索。 -
可以保存為.py或pdf文件
從
file
菜單可以保存為多種格式。 -
查找和替換
從edit/find and replace
菜單可以彈出對話框如下,點擊豎向箭頭的小圖標可以切換到搜索全部cell單元。此外還支持區分大小寫、正則表達式(js語法)。
如果只是需要找到某些文字(定位到這些文字的位置),可以直接使用瀏覽器自帶的Ctrl+F來查找。

-
設置打開密碼
先執行命令jupyter notebook --generate-config
,這會生成相關配置文件,然后jupyter notebook password
命令輸入兩次相同的密碼,再打開Notebook的時候就會提示要輸入密碼。
關閉密碼只需要找到jupyter_notebook_config.py
文件,/Users/username/.jupyter/
文件夾下,Win/Mac都一樣,但Mac下這是個隱藏文件夾。修改其中內容,c.NotebookApp.password = ''
然后重新打開Notebook就不需要密碼了。
這樣看,其實這個密碼也沒什么用,跟沒設置一樣。
-
去除token限制
復制地址換到別的瀏覽器打不開,要求輸入token的問題。
和上面密碼一樣,修改c.NotebookApp.token = ''
並保存可以禁用token。
-
快捷鍵復制行,復制單元cell
創建並編輯用戶文件夾下.jupyter/custom/custom.js
文件並進行編輯。
請參照這個文章進行。
作者:zhyuzh3d
鏈接:https://www.jianshu.com/p/a85bc2a8fa56
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。