如何優雅的使用jupyter?
使用場景?黑魔法?小技巧?
想沒有想過一個場景,你的jupyter notebook是導出一個報告給業務人員看的,他們不想看到那些密密麻麻的代碼,只想留下markdown和圖表,在jupyter notebook加入下面這段代碼就好
import IPython.core.display as di
di.display_html("&", raw=True)
各位知友已經寫的挺詳細了,我就補充一點magic命令吧!在Jupyter中可以使用許多魔法命令,因此在Jupyter環境中的操作可以更加得心應手。魔法命令都以%或者%%開頭,以%開頭的成為行命令,%%開頭的稱為單元命令。行命令只對命令所在的行有效,而單元命令則必須出現在單元的第一行,對整個單元的代碼進行處理。
在Jupyter中執行%lsmagic可以列舉所有的魔法命令;%magic可以查看關於各個命令的說明,而在%命令之後添加?可以查看該命令的詳細說明。相信你會愛上Jupyter的
可以參考下文對jupyter的配置額,讓你的jupyter美美的又好用,絕對實用技巧:
「工具控」| TL001. 裝扮你的Jupyter - 知乎專欄
我最近學了一個東西Jupyter 另類套裝,非常實用
jupyter/dashboards +
dashboards_bundlers +
dashboards_server +
kernel_gateway +
dashboards_setup (docker 教程,不會的先看這裡)
大概意思就是,整完這一套,模型開發人員,兩行代碼就一套定製化的BI系統
---------2017年06月08日補充---------
這部分的搭建的確有點費勁兒,補了一份當天的一個學習筆記,望參考, Jupyter DashBoards 另類全家桶
如何優雅的使用Jupyter Notebook,簡單描述一下目前我常用的幾個功能吧:
1. 可以另存為你想要的文件格式,比如:md文件、pdf文檔、py文件,當你專心做完實驗後,就可以直接導出你想要的文件。
2. 快捷鍵在Help裡邊可以隨時查看,常用的快捷鍵記住就好了,下面是我常用的幾個快捷鍵:
- Shift+Enter :執行當前cell里的代碼,並且在下一行插入一個cell
- A:在當前cell的上一層添加cell
- B:在當前cell的下一蹭添加cell
- 雙擊d:刪除當前cell
- m:進入markdown模式,編寫md的文檔進行描述說明
注意:使用快捷鍵之前,需要按ESC進入命令模式。
3. 有時候你可能想要將自己的Jupyter Notebook文檔分享給別人,甚至有些大牛直接拿著ipynb文檔直接在技術大會分享,這個網站可以幫助你:Jupyter Notebook Viewer
nbviewer
A simple way to share Jupyter Notebooks
類似的一個問答在這兒,可供參考:為什麼使用jupyter? - 知乎
常見的使用場景為:演講,數據分析,教學。
如何優雅的使用?學點快捷鍵,學點magic命令。
Jupyter算是剛用一年左右,大愛。寫Python代碼的時候,要不就是用WingIDE(這個也很愛),要不就是Jupyter,現在Jupyter的使用頻率遠高於WingIDE。以下我說一下Jupyter的技巧,當然我的使用的方法不一定優雅哈,且只用Jupyter寫過python,所以都以python來說。
1、寫代碼是互動式的,寫代碼時有補全,結果能以文字、表、圖等隨時看到,內核的狀態一直保存在那。寫代碼的時候,Jupyter的tab補全(有時沒有及時補全可能是反應慢)、shift+tab顯示函數幫助、命令模式像vim,各種快捷鍵都很流暢,基本能夠不用滑鼠。寫一個複雜些的函數的時候,可以一部分一部分地寫,寫一部分輸出結果確認一下,全部寫完再重構原來要的函數。有些候,初始化時(比如數據準備)耗時長,先把數據跑進來,接著就進行操作就很快了。區別於比如說WingIDE里execute file,那每次重新執行都要先初始化,節省很多很多時間。
2、僅僅通過瀏覽器就能編程了,電腦、平板、手機都完全沒有障礙。具體的配置我曾經寫過一個文章,參見:Jupyter (IPython notebook)用於伺服器的配置方法(Windows) - 知乎專欄。說明一下,密碼一定要配好,不要以為你的ip不會有人掃到的,想賺錢的黑客多得去了,我的mongodb伺服器數據被黑客清空2次了……
再寫一個缺點:
jupyter不好跟版本控制配合。我一般在文檔里會有圖表,.ipynb文件就一般比較大,直接放在版本里並不合適,而且經常乾的時候其實是改下參數,跑一下重新看一下結果,代碼並沒有改。現在的做法一般是把大部分功能封裝到py模塊里,.ipynb里主要是調用,顯示結果。然後ipynb就不版本控制了(或者存一個基本版本)
先學學它的快捷鍵:Jupyter Notebook 快捷鍵使用指南
當然是結合 pdir2 來使用啦
弄漂亮點算不算優雅?
dunovank/jupyter-themes
看到樓上說可以遠程訪問伺服器上的jupyter notebook,感覺真的是太神奇了。天哪我知道了什麼不得了的事情。看了下文檔,這個功能真的太好了,可以把耗費計算資源的程序放在伺服器上跑,比如日常跑一跑模型,交互著看結果。
jupyter notebook默認是在本機的8888埠可以訪問的,只可以被本機訪問,可以直接在瀏覽器中輸入http://127.0.0.1:8888即可。遠程訪問需要做特殊配置。配置的步驟十分簡單,在此記錄下,方便以後自己查閱。
step1.申請一台遠程伺服器
step2.遠程伺服器安裝python, pip
這裡ubuntu自帶了一個precambrian的pip,經常出bug,最好卸載掉,重新裝
apt-get remove python-pip python3-pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
python3 get-pip.py
step3.遠程伺服器上安裝jupyter notebook
sudo pip install jupyter
step4.遠程伺服器啟動jupyter notebook
jupyter notebook --no-browser --port=8889 --ip=127.0.0.1 --allow-root
step5.在本地機上把遠程jupyter與本地埠綁定
ssh -N -f -L localhost:8888:localhost:8889 remote_user@remote_host
瀏覽器輸入http://127.0.0.1:8888
token在遠程伺服器的jupyter啟動時候自動生成,找到填進去就好
A gallery of interesting Jupyter Notebooks:
jupyter/jupyter遠程訪問還要伺服器,還要配置,是不是太不適合新手了?
Azure 上有個Jupyter notebook
Microsoft Azure Notebooks微軟賬號登錄,一鍵上天
1. jupyter notebook+aws ec2
不耗本機資源,寫爬蟲的時候如果被ban了可以靠修改ec2實例的申請地址-釋放ip地址繼續測試。
對ec2不怎麼熟悉的我還覺得這是一個很方便的上傳代碼的方式…………
link: https://www.quora.com/How-do-I-create-Jupyter-notebook-on-AWS/answer/Rashmi-Banthia-1
如果是學生的話一定要去申請aws學生賬號呀。
2. cell 如果選markdown,是可以用html的tag的。
可以幫助你更優雅注釋。
比如說:
# headline 然後contrl+enter,就是最大號標題
## headline2 是2號
### headline3 是三號
** text **那麼text會加粗。
另外在markdown里寫latex公式也是可以的。
聽課的時候可以快速做筆記。
之前把機器學習打成機械學習了,已修改。
------------------
初學者嘗試一答,若有錯誤,還望指正。去官網瞧一瞧,jupter notebook的定義是這樣的。
Jupyter Notebook是一個開源的網頁應用,可以讓您創建和共享包含實時代碼,方程式,可視化和說明文本的文檔。 用途包括:數據清理與轉換,數值模擬,統計建模,機器學習等等。
關於使用場景,我覺得適用jupyter notebook的有二:
- 適合新手練習敲代碼。我起初看的《Python基礎教程(第2版)》和Sandro Tosi的《Matplotlib for Python Developers》,代碼都很簡短(很多不超過10行),上個很久以前打的代碼的截圖。
jupyter notebook的優勢就在於 少了重複保存打開的麻煩。一段代碼稱為一個cell,運行完就跳到下一段,可以像一個notebook一樣自動保存,同時還能看到之前的代碼。相對於py2自帶的shell、pycharm、eclipse for python,就很適合敲這樣的短代碼。當然pycharm中也可以用 jupyter notebook。python好感+1!
- 遠程訪問。 jupyter notebook默認只能在本地訪問的,但是可以把它安裝在伺服器上,然後在本地遠程訪問 。比如學機器學習時,機器學習的要求配置比較高,自己的筆記本跑不了,得用實驗室的電腦來學習,本地只要有個瀏覽器就好了。蛤蛤蛤~
黑魔法和小技巧,大牛會講的。溜了溜了~
「文末有Jupyter Notebook的視頻教程」
關注我知識星球(原小密圈)的朋友知道,最近我在組織一些志願者一起翻譯TA-lib這個庫。
TA-lib是一個技術分析庫,裡面包含了大部分主流的技術指標,方便使用者調用。
這個庫在國外很常用,但是因為沒有好的中文文檔(其實連英文文檔都沒有),所以在國內用的人並不多。
所以想到組織大家一起翻譯,也為python的量化社區做一點貢獻。
已經有出版社的編輯聯繫我,有意向將翻譯內容出版成書。到時候所有參與翻譯的小夥伴都會成為作者。想加入翻譯的,可以根據文末提示加我微信。
然而在翻譯過程中發現,我們翻譯的內容,即有圖文說明,又有代碼演示,排版很是麻煩。
經過調研,我決定使用Jupyter Notebook這個工具來輔助翻譯,並且錄製了一個視頻教程。
# Jupyter Notebook介紹
Jupyter Notebook其實是一個眾多大神都推薦的工具。它的前身就是大名鼎鼎的IPython。
它直接在瀏覽器裡面運行。你可以直接在裡面寫代碼,程序運行後可以立即得到反饋:
就像一個草稿本一樣,可以看到每一步運行的結果,隨時修改。這也是為什麼它叫做Notebook的原因。
另外,這也就是所謂的互動式編程環境。很多python教科書上的演示代碼,就是這麼寫出來的。
另外你也可以在裡面添加文字、圖片、視頻,支持markdown語法。
可以看到,整體效果非常美觀。也可以輕易的將完成的內容導出成pdf、markdown的格式。
# 視頻介紹
詳細內容可以見下方的視頻,從安裝到最終生成的文檔,都有詳細講述。
Jupyter Notebook視頻教程(超簡易)_騰訊視頻v.qq.com視頻買個高性能伺服器配置jupyter,24小時可遠程訪問當然是最優雅的。
提一下,如果想臨時使用遠程 notebook,用上面各位提到的辦法還是很不錯的。如果想更便捷更長期的使用遠程 notebook,推薦一個叫做 jupyterhub 的東西。啟動服務之後就可以遠程訪問啦。用系統用戶名和密碼登錄即可,當然,如果喜歡探索的話,jupyterhub 也支持 OAuth,關聯 gmail,github,gitlab 什麼的。
lambdalisue/jupyter-vim-binding
Jupyter meets Vim. Vimmer will fall in love.
上面已經說了可以遠程連伺服器,我來補充一下在Windows下怎麼連吧:How to Access Ipython Notebook Running on Remote Server. 不過 第一行代碼有誤,應該是這個 jupyter notebook --no-browser --port=8889
1、命令模式下的單元格操作:
如果單元格的邊框為綠色(即為編輯模式),請按ESC鍵,退回到命令模式。在命令模式下被選中的單元採用灰色邊框顯示。按上下方向鍵可以移動選擇框。
- 數字鍵:將單元格變為標題類型,數字越大標題越小
- m:將單元格變為markdown類型,在markdown類型的單元格內可以編寫文檔
- y: 將單元格變為代碼類型,在代碼類型的單元格中輸入Python代碼
- d: 按兩下d按鍵刪除單元格
- z: 撤銷最後刪除單元格操作
- a: 在當前單元格之上創建一個新的單元格
- b: 在當前單元格之下創建一個新的單元格
- x: 剪切當前單元格
- c: 複製當前單元格
- v: 在當前單元格之下粘貼剪切板中的單元格
- shift+k: 將當前單元格上移
- shift+j: 將當前單元格下移
- shift+m:與下面的單元合併
註:將代碼類型改為標題類型和markdown類型之後,按Ctrl+Enter對其進行格式化顯示。
2、編輯和運行:
編輯模式下單元使用綠色邊框顯示,在命令模式時按Enter即可進入編輯模式。
- Ctrl+Enter:結束編輯,對於代碼單元將運行其中的代碼,對於標題單元和markdown單元將格式化顯示
- Shift+Enter:運行當前選擇的代碼單元,並自動選擇下一個單元。
- Alt+Enter:運行當前的代碼並在下面插入新的單元。
- ctrl+/:為一行或多行添加或取消注釋
Notebook採用markdown對文本進行格式化標註。關於markdown的詳細信息請閱讀下面的教程:
http://www.jianshu.com/p/1e402922ee32
在命令模式下按Enter鍵進入編輯模式即可查看本段文字的Markdown代碼。
在行內的數學公式使用單個$括起,單獨佔一行的數學公式使用$$括起
數學公式採用LaTeX格式編寫,可以使用下面的在線編輯器編寫LaTeX數學公式:
http://www.codecogs.com/latex/eqneditor.php?lang=zh-cn
3、操作運算核
如果進入了Python的死循環,可以在命令模式下按兩下 i 按鍵終止循環。
注意右上角圖標從空心圈變為實心圈,如上圖,表示運算核正在工作,無法執行新的代碼。
請按兩下 i 按鍵終止循環,注意右上角的圖標變回空心圈,如下圖。
如果i按鍵不能終止編譯代碼中的死循環,可以按兩次0(是零不是歐)按鍵重新啟動運算核心,當前運行環境中的所有對象都將消失。重新啟動運算核心會有如下提示:
4、在線幫助和自動完成
Notebook支持顯示函數和方法的文檔和源代碼,以及自動完成對象的屬性。
輸入代碼時,按[TAB]鍵可以顯示自動完成提示框。自動完成支持當前執行環境中已知的模塊名、變數名、對象的屬性名,以及文件和目錄名。如下圖所示:
對於當前環境中已知的對象,可以在其後面添加問號查看相應的說明信息和文檔,添加兩個問號可以查看對象對應的源程序。按Ctrl+Enter顯示如下:
調用函數時,按[shift+tab]組合鍵可以顯示函數的調用參數和說明文檔,按一次組合鍵顯示基本信息,兩次顯示詳細信息,三次延時停留信息框,四次則將信息顯示在下方的滑動窗口中。按四次的情況如下圖所示:
5、向jupyter notebook中導入python文件
(1)從本地導入python文件,可以直接使用%load xxx.py,比如把名字為untitled0.py的文件導入到jupyter中。注意:本地文件導入時的絕對路徑和相對路徑的引用方式的不同
按Ctrl+Enter後,結果如下:
再按Ctrl+Enter後,結果如下:
(2)從網路中導入python代碼,可以使用%load 網址
6、jupyter中運行python文件
直接在cell中輸入:%run xxx.py 按Ctrl+Enter後,執行結果直接在這個cell的下面顯示如下圖所示:
7、圖片顯示
當在程序中使用了matplotlib繪圖,不能直接顯示時,需要加%matplotlib inline
加%matplotlib inline後的顯示如下圖所示:
最後做下說明:我只用過自己電腦上的jupyter不知道是否具有通用性。我電腦的jupyter版本是安裝windows64位的anaconda(python 3.5)自帶的版本。請酌情參考吧!
參考文獻:
1-4點主要參考此書【PYTHON科學計算(第2版)】 張若愚著 清華大學出版社 2016-04-06
5-7點是自己學習中曾遇到問題及其解決辦法
歪個樓問一下大神們改變theme後工具欄不見了怎麼辦?
遠程調試和開發就靠他了
推薦閱讀:
※數據可視化的軟體,個人使用的,求推薦,最好多說幾個,多多益善?
※哪些適合宿舍用的電腦椅 ?
※如何將枯燥的大數據呈現為可視化的圖和動畫?
※y=x^x 的图像大概是什么样的?