[譯] 那些讓你如虎添翼的 Jupyter Notebooks 進階外掛神器
From towardsdatascience 編譯:Simon's Road
Jupyter notebook是一款學習和科研的神奇,相信很多小夥伴已經利用它在學術科研、研究開發的道路上收穫了便捷易用、可視直觀的優點。但除了可以在瀏覽器編輯執行程式碼、一系列暢爽的魔法命令外,jupyter還有眾多基於js開發的拓展外掛能幫助我們事先更加自如和高效的使用,讓我們在科研的道路上如虎添翼、健步如飛。
1. 自動補全
(Hinterland)
在通常情況下jupyter中實現程式碼補全需要主動按tab鍵,但有的時候會很期待jupyter可以實現如IDE一般的自動補全顯示,是需要輸入指令的頭部所有符合的指令變換躍然螢幕任君挑選。有了Hinterland之後,你就可以享受與其他流行的IDE(如PyCharm和VCS)一樣順滑的自動程式碼補全了,便捷高效想到就能補到。
https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions/hinterland/README.html
2. 單元格分置
(Split Cells Notebook)
從vim到sublime,各類編輯器都支援多視窗編輯、檢視程式碼。如果notebook可以實現這樣的功能就可以在寬屏顯示器上自由的施展拳腳了。notebook中split功能為我們貼心地準備了這個功能,只需輕輕一點就可以將原先垂直順序排列的單元格變成水平排列,更好的檢視與分析程式碼和計算結果。通過該擴充套件外掛可以將Notebook的單元格分開,再將它們相鄰放置。
3. 插入常用程式碼片
(Snippets)
在程式碼中存在很多可以複用的程式碼片,比如說每次程式開頭都需要import的一大堆包和一些常用的資料操作、繪圖指令。為了便捷的複用這些指令,Snippets為我們提供了一鍵插入程式碼片段的功能,從此再也不用辛苦的輸入那些常用的指令,甚至copy-paste都免了,輕輕一點程式碼出現!此擴充套件外掛為Notebook工具欄添加了一個下拉選單,允許將程式碼片段單元格輕鬆插入當前Notebook中。
4. 摺疊單元格
(Collapsible Headings)
程式碼寫的太長、註釋寫的太多、整個note太亂了,又長又沒有清晰的結構該如何是好呀?Collapsible Headings允許Notebook根據標題來分隔的可摺疊部分。如果Notebook中有很多不整潔的程式碼,我們就可以摺疊起來免除了反覆滾動的煩惱,同時也為整個notebook帶來了整潔的視覺體驗。
5.幻燈片放映
(Slideshow)
Notebooks是教學和編寫可解釋程式碼的有效工具。無論是給同學講解程式碼還是給老闆彙報進展,一份動態、順滑、有程式碼有圖片的報告總會帶來很好的效果。 Jupyter Notebooks可輕鬆轉換為幻燈片,將你的工作轉換為圖文並茂的生動報告,也許我們就不再需要PPT啦~
我們可以通過以下兩個方式來實現:
· Jupyter的內建幻燈片
在你的notebook中,可以通過工具欄導航到 View → Cell Toolbar → Slideshow 。
這時每個單元格頂部都會出現一個淺灰色條,您可以根據不同的五種特性自定義幻燈片,其中幻燈片是主要的呈現形式,還包括可以上下滑動的自幻燈片和浮動的碎片。
在設定完成後轉到notebook所在的目錄,執行以下程式碼:
幻燈片將顯示在本地8000埠。此外目錄中將生成.html檔案,您也可以從那裡雙擊訪問幻燈片。
· RISE (Reveal.js plugin)
jupyter的問題在於無法再執行幻燈片的時候執行程式碼,而RISE提供了邊演示便執行的解決方案。RISE是Reveal.js — Jupyter/IPython Slideshow Extension 的首字母縮寫。 它利用reveal.js來執行幻燈片。這非常有用,因為它能在不必退出幻燈片的情況下執行程式碼。 使用如下命令進行安裝:
在適當的目錄安裝JS和 CSS:
現在我們就會發現一個新的擴充套件,上面寫著“Enter/Exit RISE Slideshow.”。
邊演示便執行真的很爽,是時候向老闆展示你真正的實力了。
6. 魔法工具包
(Jupyter Widgets)
Widgets是在jupyter裡具有代表性的多事件python物件,通常作為滑塊、文字框等控制元件使用。Widgets可用於構建互動式圖形使用者介面。 通過以下命令來安裝它們:
其中包含了一系列優秀的視覺化互動控制元件,從引數調整到檔案遍歷,從顏色拾取到繪圖風格變換,豐富且有用的小工具你一定會喜歡的。
https://github.com/jupyter-widgets/ipywidgets/blob/1223d4128aebe6c8831a034a73d1546a91f5138a/docs/source/examples/Widget%20Basics.ipynb
互動控制元件
這是IPython中widgets最簡單的使用方法。
互動功能(ipywidgets.interact)會自動為程式碼和資料建立使用者介面(UI)控制元件。在資料探索過程中,通常要一次又一次地重新執行相同的單元,而每次都只會稍微改變下輸入引數,這種致操作方式效率十分低下。理想解決方案是使用互動式控制元件,無需重寫或重新執行程式碼即可更改輸入。 使用IPython widgets(ipywidgets),您可以使用一行程式碼構建互動式控制元件。該庫允許我們將Jupyter Notebooks從靜態文件轉換為互動式儀表板,非常適合資料的探索和視覺化資料。
我們可以使用 @interact 修飾器快速將任何普通函式轉換為互動式控制元件,例如改變x的取值:
快速迴圈遍歷所有影象,而無需重新執行單元程式。 如果調試卷積神經網路並想要檢查網路錯分類的影象,這招就很管用。
Widgets在資料探索方面的用途是多種多樣的。 還可以用來便捷地分析兩列資料間的相關性,對於資料科學家和統計學家十分有用。
播放控制元件
Play widget能以一定速度按照整數序列來迴圈播放動畫,並可以通過滑塊的值來控制播放相關引數。
日期選擇器控制元件
日期選擇器控制元件 Date picker 可在Chrome和IE Edge中使用,但目前暫時無法在Firefox或Safari中使用,因為它們不支援HTML日期輸入欄位。
顏色選擇控制元件
Color picker 可以調出調色盤,供你選擇最中意的顏色:
表格控制元件
表格控制元件Tab可以構建類似excel的表格,便於展示和視覺化資料:
Widgets for Plots 繪圖控制元件
互動式控制元件對於選擇資料繪製特別有用,我們同樣可以使用@interact修飾器將資料視覺化函式轉為控制元件:
這裡,cufflinks+plotly的組合用來實現互動式繪圖。如果繪圖的更新速度有點慢,我們可以使用@interact_manual,手動點選按鈕來進行更新。
Qgrid
Qgrid主要關注DataFrame物件。 它使用SlickGrid在Jupyter notebook中渲染pandas DataFrame。 這使您可以使用直觀的滾動、排序和篩選控制元件來瀏覽DataFrame,還可以通過雙擊單元格來編輯DataFrame,可以便捷高效的檢視dataframe中的資料:
7. 視訊/PDF/url外掛
使用IPython的顯示模組,您可以輕鬆地將URLs、pdf和視訊嵌入到您的Jupyter Notebooks中。
顯示pdf,組會講論文神器呀:
再來個視訊佐證自己的觀點吧:
8. Jupyter主題
原生的白色主題太扎眼了,好想用暗色系的主題保護眼睛,安心擼程式碼?就像你用的IDE概要或主題設定? 安裝jupyterthemes就可解你的燃眉之急。
Jupyter也有同樣的功能,這些主題還可以增強了程式碼的顯示, 可以定製自己喜歡的字型字號和背景顏色。雖然主題數量不多,但用起來相當不錯,以後也會越來越多。
寫在最後
如果你對這些拓展功能躍躍欲試啦,那就趕快給你的jupyter新增想要的外掛吧!外掛安裝連線請參考:
https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/install.html
還可以發掘原始碼進行學習,他日寫出自己中意的外掛:
https://github.com/ipython-con trib/jupyter_contrib_nbextensions/tree/master/src/jupyter_contrib_nbextensions/nbext ensions
jupyterlab外掛:
https://jupyterlab.readthedocs.io/en/stable/user/extensions.html
-The End-
將門 是一家 以技術創新為切入口 的早期創新發掘機構,旗下設有將門創新服務、將門技術社群以及將門投資基金。
將門創新服務
專注於使創新的技術落地於真正的應用場景,啟用和實現全新的商業價值,服務於行業領先企業和技術創新型創業公司。
將門技術社群 專注於幫助技術創新型的創業公司提供來自產、學、研、創領域的核心技術專家的技術分享和學習內容,使創新成為持續的核心競爭力。
將門投資基金 專注於投資通過技術創新啟用商業場景,實現商業價值的初創企業,關注技術領域包括 機器智慧、物聯網、自然人機互動、企業計算。 在兩年的時間裡,將門投資基金已經投資了包括量化派、碼隆科技、禾賽科技、寬拓科技、 杉數科技、迪英加科技等數十傢俱有高成長潛力的技術型創業公司。
如果您是技術領域的初創企業,不僅想獲得投資,還希望獲得一系列持續性、有價值的投後服務, 歡迎傳送或者推薦專案給我“門”: [email protected]
點選右上角,把文章分享到朋友圈
點選“ ❀好看 ”,讓更多朋友們看到吧~