Jupyter Notebook數據科學高效技巧
摘要: 本文有一些關於Jupyter Notebook的乾貨,希望看完文章可以給你帶來收穫
原文:http://click.aliyun.com/m/42574/
當我學習有關深度學習的優秀的fast.ai課程時,我學到了很多適用於通用軟體工程的乾貨。我寫這篇文章是為了總結這些技巧並與你分享。
1.Jupyter Notebook拓展
標準的Jupyter Notebook很不錯,但是還有更多的擴展功能可以幫助你完成工作,並且可以將許多功能結合在一起。
Install Jupyter extension package
你可以在這裡找到更多Jupyter主題。安裝配置器後,你會看到有一個新的「Nbextensions」選項卡。獲取這些項目打勾
1.Autopep8
2.Collapsible Headings
3.Gist-it
A. Collapsible Headings
現在你可以摺疊你的筆記本,而不是滾動無窮的代碼。根據我的經驗,在進行探索性數據分析和繪製圖表時,我寫了很多不幹凈的代碼,我必須非常努力地滾動才能到達目的地。你可以展開單元格或摺疊單元格以使其更清晰。我想你甚至可以做一個目錄(我還沒有嘗試過這個擴展)。
B. Gist-it
如果你以前使用過Gist,它基本上是一個讓你共享筆記本的地方。當你想要共享你的代碼時,這是非常有用的,特別是當你有bug並且想要共享它的時候。只要按一下按鈕,一切就會在幾秒鐘內完成。
默認情況下,它將發布一個匿名的Gist,如果你想用Github帳戶發布它,你需要生成一個令牌認證。主要的區別是,如果你用自己的帳號發表文章,你可以編輯你的要點。
我在這篇文章中使用的筆記本在此。
https://gist.github.com/a0d020c17ce1715bf1d031b1cb8a9fa4
C. Autopep8
造型很重要,但也很無聊。如果你不想太用力,只要按一下這個小按鈕,它就會為你做所有的間隔!(PEP8是Python代碼的風格指南)
2.把時間花在你的任務上,並從中吸取教訓!
我一直在聲明循環之前的開始時間,減去當前時間來獲得運行時間。這並沒有錯,但你可以讓它變得更容易。使用內置的魔法命令。它們對你來說可能不自然,但使用起來真的很方便。(魔法命令以%開始)
讓我們從一個簡單的函數開始。它計算的是最後一個小於n的Fibonacci數。
你可以使用%time來計時一次運行或函數%timeit來計時,並得到平均值和標準偏差。這對於這些簡單的函數很有用,那麼調用另一個函數的函數呢?
這裡是%prun,我創建了一個虛函數,可以很長時間調用fib1()。你可以看到循環確實花了一些時間,但大部分時間都花在了fib1()上。
3.Cython
Cython是一個允許你用python編譯C的包,這是numpy和pandas速度很快的主要原因。確保你已經通過Cython安裝
在不改變任何代碼的情況下,你可以獲得即時的雙重性能!這很好,但一點也不神奇。
如果你稍微修改一下腳本,看看你能實現什麼。如果你對C編程有一些經驗,你可能知道,當我們聲明一個變數時,我們需要定義一個數據類型。這個腳本確實改變了一點,因為像這樣的操作對於Python來說是獨一無二的,C語言沒有這個特性。因此,我們需要分配一個臨時變數來存儲該值。
(感謝James Martini先前指出了fib3中的一些錯誤!)
從582到48納秒,速度提高了10倍,而且你實際上不需要更改很多腳本。對我來說,這是令人興奮的,因為大部分時間你都可以使用慢速代碼。你所關心的是一次次被呼來喚去的。使用%prun和一些Cython代碼,可以在不編譯任何文件的情況下獲得C速度。
除了魔法命令,我發現在Jupyter做shell命令也是非常有用的。(魔法命令以%開始,shell命令以!開始)
本文由阿里云云棲社區組織翻譯。
文章原標題《Jupyter Notebook Tricks for Data Science that Enhance your ejciency》
作者:Nok
譯者:董昭男,審校:。
更多技術乾貨敬請關注云棲社區知乎機構號:阿里云云棲社區 - 知乎
推薦閱讀:
※短視頻小團隊賺錢必須具備這種人才!市場稀缺!
※魯德——Python開發性能測試腳本
※免費:3dmax不基於UV遮罩插件腳本