啟程:Jupyter Notebook

希望大家已經在自己的電腦里安裝了Anaconda,今天就開始我們數據科學之路的第一站啦!我們來挑一把絕世好劍 —— Jupyter Notebook!

在說介紹 Jupyter Notebook 之前,我覺得有必要簡單提一下什麼是 IPython!Ipython 作為一個增強的Python 解釋器於2001年啟動,該項目致力於提供「科學計算的全生命周期開發工具」,如果說將Python 看做數據科學任務的引擎,那麼IPython可以認為是提供了一個互動式介面的控制面板。而Jupyter Notebook是IPython shell基於瀏覽器的圖形界面,它不僅可以執行Python/IPython語句,還允許用戶添加格式化文本,靜態和動態的可視化圖像、數學公式、JavaScript插件,等等。不僅如此,Notebook文檔還能共享,他人也可以打開你的Notebook並且在自己的系統中執行Notebook代碼。

想要啟動Notebook,需要你在系統的命令行中輸入下面的命令"jupyter notebook"(在這裡我已經默認你的電腦里安裝了Anaconda),一旦上面的命令執行,你的默認瀏覽器就會自動打開,並且自動導航到localhost網址。點擊右上角的new,選擇Python就可以創建你自己的Notebook啦!

在這篇文章里,我們會介紹一些Jupyter Notebook的常用命令,便於你更好的使用它。

首先我們來說說通過help()函數獲取文檔

Python語言和其數據科學生態系統是應用戶需求而創建的,而用戶的很大一部分需求是獲取文檔。每一個Python對象都有一個字元串的引用,該字元串即為docstring。大多數情況下,該字元串包含對象的簡要介紹和使用方法。Python內置的help()函數可以獲取這些信息並且列印輸出結果。

>>> help(len)Help on built-in function len in module builtins:len(obj, /) Return the number of items in a container.

在上面我們用help()函數查看了內置的len函數的文檔,其實help()函數還可以查看某個模塊中包含哪些函數以及這些函數的用法

>>> import math>>> help(math)Help on built-in module math:NAME mathDESCRIPTION This module is always available. It provides access to the mathematical functions defined by the C standard.FUNCTIONS acos(...) acos(x) Return the arc cosine (measured in radians) of x.……DATA e = 2.718281828459045 inf = inf nan = nan pi = 3.141592653589793 tau = 6.283185307179586FILE (built-in)>>> help(math.acosh)Help on built-in function acosh in module math:acosh(...) acosh(x) Return the inverse hyperbolic cosine of x.

從上面我們可以看到,我們使用help()函數查看了內置模塊math,這裡很詳細的顯示了math模塊中包含了哪些函數以及預定義的數據,我們又使用help()函數查看了math模塊中acosh函數的用法。不過大家不要忘了哦,最重要的幫手還是Baidu/Google(能用Google的就別用百度,理由不多說了……)

接下來請大家牢記一個小trick,在寫代碼的時候我們可以使用Tab鍵來自動補全和探索對象、模塊以及命名空間的內容Ctrl + d可以快速的刪除整行的內容以及Ctrl + Enter可以快速運行一個代碼塊(這部分我演示不了……QAQ!你們自己試一試就知道啦!超爽的,嘻嘻!)

接下來我們介紹一些IPython在普通Python語法基礎之上的增強功能,這些功能被稱作IPython魔法命令,接下來我們簡單介紹其中幾個:

執行外部代碼:%run

當你開發更加複雜的代碼時,可能會發現自己在使用IPython進行互動式探索的同時,還需要使用文本編輯器存儲你希望重用的代碼。在IPython會話中運行之前的代碼非常方便,不需要在另一個窗口中運行這些程序代碼,可以通過%run這個魔法命令來實現。

假設你創建了一個myscript.py文件,其中包含以下內容:

# file: myscript.pydef square(x): """求平方""" return x ** 2for N in range(1, 4): print(N, " squared is ", square(N))

你可以在Jupyter Notebook的代碼塊中運行該程序:

%run myscript.py1 squared is 12 squared is 43 squared is 9

請注意,當你運行了這段代碼之後,該代碼中包含的所有函數都可以在Jupyter Notebook中使用:

>>> square(6)36

另一個非常有用的魔法命令是%timeit,他會自動計算接下來一行的Python語句的執行時間

%timeit L = [n ** 2 for n in range(1000)]412 μs ± 13.9 μs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%timeit的好處是,它會自動多次執行簡短的命令,以獲得更穩定的結果。對於多行語句,可以加入第二個%符號將其轉變成魔法單元,以處理多行輸入,例如:

%%timeit>>> L1 = []>>> for n in range(1000):>>> L1.append(n ** 2)459 μs ± 19.6 μs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

從以上結果可以立刻看出,列表比同等的for循環快了大約10%。

那我們今天的Jupyter Notebok使用就先講到這裡,後續一些內容我們用到的時候再具體說明!希望大家記住這樣一句話,這句話也適用於整個專欄:光靠眼睛看是學不會的!建議大家先通讀一遍,然後用我介紹的工具和方法動手實踐一遍!今天的文章中涉及的代碼我都放到我的Github里啦,有興趣的同學可以去看一看!對於文章和代碼中的錯誤還請各位不吝賜教,批評指正!歡迎大家留言討論,有什麼問題也歡迎直接給我私信哦!下一站我們就要開始Numpy的探索之旅啦,大家可以先期待一下!


推薦閱讀:

Python數據科學(三)- python與數據科學應用(Ⅲ)
從0開始,Data Scientist之路 Day 4
哈佛大學數據科學專業解析
一行代碼,Pandas秒變分散式,快速處理TB級數據
雖然是BSO但是還算是我的DS提高路程

TAG:Python | JupyterNotebookIPythonNotebook | 數據科學 |