Jupyter Notebook入門(mén)
人生就像一只儲(chǔ)蓄罐,你投入的每一分努力上祈,都會(huì)在未來(lái)的某一天培遵,回饋于你。而我們要做的雇逞,就是每天多努力一點(diǎn)點(diǎn)荤懂,進(jìn)步一點(diǎn)點(diǎn)茁裙。
1. 啟動(dòng)
在終端中輸入jupyter notebook
是最常用的啟動(dòng)方式塘砸,默認(rèn)在本地的8888端口啟動(dòng)。如果本地已經(jīng)有一個(gè)jupyter正在運(yùn)行晤锥,再啟動(dòng)一個(gè)就會(huì)運(yùn)行在8889端口掉蔬。運(yùn)行完該命令,會(huì)在系統(tǒng)默認(rèn)的瀏覽器打開(kāi)一個(gè)網(wǎng)頁(yè)矾瘾,網(wǎng)頁(yè)的地址是:
http://localhost:8888/tree
女轿。
新建
點(diǎn)擊右側(cè)的New,選擇Python3會(huì)在新的頁(yè)面中建立一個(gè)未命名的notebook文件壕翩,選擇Text File會(huì)新的頁(yè)面中建立一個(gè)未命名的txt文件蛉迹,選擇Folder會(huì)在當(dāng)前頁(yè)面中建立一個(gè)未命名文件夾,選擇Terminal會(huì)在新的頁(yè)面中建立Terminal放妈。
需要注意的是我們執(zhí)行該啟動(dòng)命令的目錄就是啟動(dòng)之后的根目錄北救。如果你是要打開(kāi)已經(jīng)存在的.ipynb文件,最好切換到該文件所在目錄再啟動(dòng)芜抒,或者啟動(dòng)之后將文件移動(dòng)(或復(fù)制)到啟動(dòng)目錄下珍策。
Running選項(xiàng)卡下可以看到當(dāng)前正在運(yùn)行的terminal和notebook,使我們可以對(duì)目前的資源使用情況進(jìn)行一個(gè)直觀了解宅倒。
2.退出
如果要停止某個(gè)正在執(zhí)行的notebook文件攘宙,可以在file選項(xiàng)卡下勾選該文件,點(diǎn)擊shutdown(也可以用其他方式拐迁,見(jiàn)后文)蹭劈。如果要關(guān)閉整個(gè)jupyter notebook,可以在終端中按下鍵盤(pán)上的Ctrl C即可线召。
Notebook使用說(shuō)明
接下來(lái)我們重點(diǎn)說(shuō)明一下新建“python3”之后的操作链方,這也是最常用的編寫(xiě)python文件的操作。
1.總體布局
上面圖中大致說(shuō)明了Notebook中每一部分的作用灶搜,對(duì)平常使用python運(yùn)行程序來(lái)講祟蚀,快捷命令已經(jīng)足夠工窍。快捷命令工具條從左到后的圖標(biāo)依次表示:保存文件前酿,添加新cell患雏,剪切選中的cell,復(fù)制選中的cell罢维,粘貼選中的cell淹仑,將選中cell上移,將選中cell下移肺孵,執(zhí)行選中的cell匀借,終止kernel,重啟kernel平窘,重啟kernel并重新運(yùn)行所有cell吓肋。Code點(diǎn)擊之后有四個(gè)選項(xiàng),分別是:Code(寫(xiě)python代碼)瑰艘,MarkDown(寫(xiě)MarkDown代碼是鬼,通常用于注釋),Raw NBConvert(一個(gè)轉(zhuǎn)換工具)紫新,Heading(快捷添加MarkDown標(biāo)題)均蜜。最后一個(gè)小鍵盤(pán)可以查看和搜索一些快捷鍵的操作。
2. 常用菜單操作:
修改文件名:可以點(diǎn)擊文件名稱(chēng),在彈出的框中直接修改或者File—>Rename
新建Notebook文件:File—>New Notebook—>python3
下載文件:File—>Download as —> 選擇目標(biāo)格式即可下載
合并cell:Edit—>Merge Cell Above或Merge Cell Below
重啟Kernel并清除所有輸出:Kernel—>Restart & Clear Output
重啟Kernel并運(yùn)行所有cell:Kernel—>Restart & Run All
停止當(dāng)前Notebook運(yùn)行:Kernel—>ShutDown
這里只列出了常用的菜單操作,沒(méi)有列出的并不表示不常用绢掰,而是可以用快捷鍵或者菜單欄下方的快捷工具代替葫哗。如果需要查看每一個(gè)菜單選項(xiàng)的含義和作用,推薦文章:https://blog.51cto.com/853056088/2162189,寫(xiě)的非常詳細(xì)。
3. 命令模式和編輯模式
每一個(gè)cell有兩種模式:命令模式和編輯模式。如下圖所示:最左側(cè)是藍(lán)色的條是命令模式聪铺,是綠色的條表示編輯模式(此時(shí)cell中有光標(biāo),可以進(jìn)行代碼編寫(xiě))萄窜。在命令模式下铃剔,按下enter或者鼠標(biāo)單擊代碼框可以進(jìn)入編輯模式。在編輯模式下查刻,按下esc或者鼠標(biāo)單擊代碼框左側(cè)區(qū)域即可進(jìn)入命令模式键兜。
4. 常用快捷(鍵)操作:
代碼運(yùn)行:
ctrl + enter:運(yùn)行當(dāng)前cell的代碼,運(yùn)行完后依然保持在當(dāng)前cell
shift + enter:運(yùn)行當(dāng)前cell的代碼穗泵,運(yùn)行完后跳轉(zhuǎn)到下一個(gè)cell普气,如果是最后一個(gè)cell則會(huì)新增一個(gè)
工具條上的Run
創(chuàng)建新的cell:
命令模式下,按下字母a(above)佃延,會(huì)在當(dāng)前cell上方增加一個(gè)cell
命令模式下现诀,按下字母b(blove)夷磕,會(huì)在當(dāng)前cell下方增加一個(gè)cell
工具條上的?按鈕
刪除當(dāng)前側(cè)cell
命令模式下,按下字母x仔沿,即可刪除當(dāng)前cell
命令模式下坐桩,連續(xù)兩次按下字母d,即可刪除當(dāng)前cell
工具條上的“剪刀”按鈕
合并cell
命令模式下封锉,選中多個(gè)cell绵跷,shift + M可以進(jìn)行合并
Edit—>Merge Cell Above/Merge Cell Down
拆分cell
編輯模式下,以光標(biāo)所在之處為分界點(diǎn)成福,ctrl shift -(減號(hào))碾局,可以進(jìn)cell的拆分
Edit—>Split Cell
保存代碼
命令模式下,按下字母s奴艾,就能創(chuàng)建一個(gè)checkpoint
工具條上的保存按鈕
File—>Save and Checkpoint
查找替換
編輯模式下净当,ESC + F
Edit—>Find and Replace
折疊輸出:有時(shí)輸出過(guò)長(zhǎng)的情況
編輯模式下,ESC+O
在cell左側(cè)位置上雙擊即可折疊
Cell—>Current Output—>Toggle
顯示代碼行號(hào)
命令模式下握侧,按下字母l(L的小寫(xiě)蚯瞧,鍵盤(pán)k右側(cè)的l)鍵嘿期,就能顯示當(dāng)前cell的行號(hào)
shift + l品擎,顯示所有cell的行號(hào)
View—>Toggle Line Numbers
切換代碼類(lèi)型
命令模式下,按下m切換到MarkDown模式备徐,再按下y切換到code模式
工具條上手動(dòng)切換
Cell—>Cell Type—>選擇相應(yīng)的代碼類(lèi)型
注釋代碼
-
選中代碼萄传,command+/ (windows下是control)
注:其他的快捷鍵可以點(diǎn)擊工具欄最后的小鍵盤(pán)查看。
tab鍵的使用
只輸入變量或者函數(shù)的前幾個(gè)字母蜜猾,按下tab可以自動(dòng)補(bǔ)全
-
已經(jīng)輸入函數(shù)秀菱,連續(xù)按下shift+tab可以查詢(xún)函數(shù)的具體用法,(一直可以按4次)
image
執(zhí)行shell命令
- 英文狀態(tài)下的感嘆號(hào)+普通的shell命令蹭睡,例如:
!pwd
衍菱,!ls
等,有些時(shí)候或許很有用肩豁。
5. 魔法函數(shù)
以上是一些常用的魔法函數(shù)脊串,其他的一些魔法函數(shù)依然可以查閱上面的鏈接,https://blog.51cto.com/853056088/2162189嗎清钥,讀者可以查閱其具體的用法琼锋。
Jupyter Notebook擴(kuò)展
執(zhí)行以下代碼可以安裝jupyter notebook擴(kuò)展
pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install
安裝完之后,重新啟動(dòng)一下jupyter 服務(wù)祟昭,就可以看到Nbextensions選項(xiàng)卡缕坎。我們只需要勾選相應(yīng)的插件,在每一個(gè)notebook的工具條中就會(huì)出現(xiàn)相應(yīng)的擴(kuò)展篡悟。選中每個(gè)擴(kuò)展的時(shí)候谜叹,在其下方都會(huì)出現(xiàn)關(guān)于該擴(kuò)展的說(shuō)明匾寝,演示,配置等情況荷腊,通過(guò)仔細(xì)閱讀我們就能得知該擴(kuò)展的用法旗吁。
比較好用的幾個(gè)擴(kuò)展及其作用如下:
jupyter notebook 修改主題、字體停局、字號(hào)
Jupyter notebook 是個(gè)好東西很钓,但是默認(rèn)皮膚實(shí)在是看得人難受,最不能忍的是字號(hào)太小董栽。
安裝此工具:
pip install --upgrade jupyterthemes
查看可用主題:
jt -l
我自己的設(shè)置如下:
jt -t oceans16 -f fira -fs 13 -cellw 90% -ofs 11 -dfs 11 -T
1.Table of Contents
這個(gè)擴(kuò)展一般用于整個(gè)文件的目錄很多的時(shí)候码倦。首先在Nbextensions選項(xiàng)卡中勾選該插件,然后在工具條中就可以看到該擴(kuò)展按鈕锭碳。如果我們?cè)趎otebook中使用了MarkDown設(shè)置了我們的標(biāo)題袁稽,點(diǎn)擊該擴(kuò)展,就會(huì)在左側(cè)生成目錄擒抛,點(diǎn)擊左側(cè)的齒輪推汽,可以在最頂部添加一個(gè)cell專(zhuān)門(mén)用來(lái)顯示目錄。點(diǎn)擊左側(cè)和頂部的鏈接都可以快速跳轉(zhuǎn)到相應(yīng)的位置歧沪。還可以進(jìn)行目錄的折疊歹撒。注意到此時(shí)菜單欄上也多了一個(gè)“Navigate”標(biāo)簽,同樣顯示了目錄的情況诊胞。
2.Autopep8
這是一個(gè)將代碼按照PEP8進(jìn)行格式化的插件暖夭,前提是需要通過(guò)pip install autopep8
安裝autopep8,安裝完之后需要重啟jupyter notebook服務(wù)才能生效撵孤。同樣在Nbextention選項(xiàng)卡中勾選Autopep8迈着,在工具欄中會(huì)多一個(gè)“錘子”一樣的按鈕,可以幫助我們排版代碼邪码,使其符合pep8標(biāo)準(zhǔn)裕菠。
3.Variable inspector
該插件可以幫助我們查看當(dāng)前notebook中所有的變量的名稱(chēng),類(lèi)型闭专,大小和值奴潘。省去了df.shape,type()等語(yǔ)句的執(zhí)行喻圃,也代替了前文提到的魔法函數(shù)“%whos”的執(zhí)行萤彩,讀者可以自行嘗試一下。
4.Code folding
顧名思義斧拍,該插件可以對(duì)代碼進(jìn)行一定的折疊雀扶,例如遇到class,def等關(guān)鍵字,而且主體代碼又很長(zhǎng)時(shí)愚墓,折疊代碼會(huì)方便閱讀予权,這一點(diǎn)也讓jupyter notebook更像一個(gè)IDE。
5.Execute time
該插件可以顯示每一個(gè)cell中代碼的執(zhí)行時(shí)間浪册。
除此之外還有一些其他常見(jiàn)的插件擴(kuò)展扫腺,例如Notify,Collapsible headings等村象,讀者可以自行探索查看笆环,并配置使用。
其他說(shuō)明
-
制作幻燈片并放映:參考該鏈接的第二部分:
數(shù)學(xué)公式編輯:這個(gè)其實(shí)是MarkDown功能的延伸厚者,需要將cell的代碼類(lèi)型改為MarkDown躁劣,然后在一對(duì)美元符號(hào)之間寫(xiě)入LaTex公式,(例如
$E=mc^2$
)库菲,運(yùn)行cell之后就可以正常顯示公式了账忘。關(guān)于jupyter lab和jupyter hub
jupyter lab是基于jupyter notebook的新版本,是包括了Notebook的下一代的有模塊化的界面熙宇,可以在同一個(gè)窗口同時(shí)打開(kāi)好幾個(gè)notebook或文件(HTML, TXT, Markdown等等)鳖擒,都以標(biāo)簽的形式展示,于是就更像是一個(gè)IDE烫止。除了界面上存在差異蒋荚,使用方式上和notebook沒(méi)有大的差別。
jupyter hub是一個(gè)支持多用戶(hù)的 Jupyter Notebook 服務(wù)器烈拒,用于創(chuàng)建圆裕、管理广鳍、代理多個(gè) Jupyter Notebook 實(shí)例荆几。具有擴(kuò)展性和可定制性。常見(jiàn)的場(chǎng)景是公司的運(yùn)維人員對(duì)很多人使用的Notebook進(jìn)行管理和資源分配赊时。這里不太方便演示吨铸。
- 關(guān)于jupyter notebook與pycharm的差別
個(gè)人認(rèn)為notebook是更“輕”量級(jí)的,適合小白使用祖秒。各個(gè)cell之間具有相對(duì)獨(dú)立诞吱,且變量共享的特點(diǎn),某些時(shí)候特別有用竭缝。(例如在爬蟲(chóng)時(shí)房维,請(qǐng)求一次就獲得了html源碼,后面進(jìn)行頁(yè)面解析時(shí)就可以以此為基礎(chǔ)進(jìn)行調(diào)試抬纸,無(wú)需再次請(qǐng)求咙俩,在處理對(duì)請(qǐng)求頻次有限制的網(wǎng)站時(shí)還是很有用的)。除此外,notebook能夠保存中間結(jié)果阿趁,方便演示膜蛔,適合數(shù)據(jù)分析人員或者數(shù)據(jù)科學(xué)家使用。
pycharm更適合大型工程項(xiàng)目的管理脖阵,每一個(gè)文件是一次執(zhí)行的皂股。如果一個(gè)項(xiàng)目工程中有很多個(gè)文件,這時(shí)最好使用pycharm命黔。此外pycharm在代碼編輯時(shí)呜呐,隨時(shí)會(huì)有提示,而且支持代碼跳轉(zhuǎn)悍募,便于對(duì)源碼的查看學(xué)習(xí)卵史。當(dāng)然工具畢竟只是工具,適合自己的就是最好的搜立,讀者可以根據(jù)自己的需求和使用習(xí)慣進(jìn)行選擇以躯。
JupyterLab——Jupyter Notebooks 的進(jìn)化
JupyterLab 是今年二月份推出的,被認(rèn)為是 Jupyter Notebooks 的進(jìn)一步發(fā)展啄踊。其支持更加靈活和更加強(qiáng)大的項(xiàng)目操作方式忧设,但具有和 Jupyter Notebooks 一樣的組件。JupyterLab 環(huán)境與 Jupyter Notebooks 環(huán)境完全一樣颠通,但具有生產(chǎn)力更高的體驗(yàn)址晕。
JupyterLab 讓你能在一個(gè)窗口中排布你的筆記本、終端顿锰、文本文件和輸出結(jié)果工作區(qū)谨垃!你只需拖放你需要的單元即可。你也可以編輯 Markdown硼控、CSV 和 JSON 等常用文件格式并實(shí)時(shí)預(yù)覽修改所造成的影響刘陶。
如果你想在你的機(jī)器上試用 JupyterLab,可查看安裝說(shuō)明:http://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html牢撼。JupyterLab 的開(kāi)發(fā)者的長(zhǎng)期目標(biāo)是最終替代 Jupyter Notebooks匙隔。但目前來(lái)看這還需要一些時(shí)間。