你們要的Python數據分析庫,Ipython的開發實戰


你們要的Python數據分析庫,Ipython的開發實戰

之前小編為大家整理了一些Python數據分析庫,今天再來介紹一種。

IPython

IPython是Python科學計算標準工具集的組成部分,它可以把很多東西聯繫到一起,有點類似一個增強版的Python shell。

目的是為了提高編程,測試和調試Python代碼的速度,好像很多國外的大學教授,還有Google大牛都很喜歡用IPython,確實很方便,至少我在分析數據的時候,也是用這個工具的,而且不用print,回車就能打印。

Ipython相比於原生的python有什麼優勢

(1) python shell不能在退出保存歷史;ipython歷史記錄自動保存:保存在history.sqlite文件下:可用“_”、“__”、“___”調用最近三次記錄;

(2) python shell不支持tab自動補全;ipython支持tab補全;

(3) python shell不能快速獲取類、函數信息;ipython通過“?”顯示對象簽名、文檔字符串、代碼位置,通過“??”顯示源代碼;

(4) python shell不能直接執行shell命令,需要藉助sys;ipython通過“!”調用系統命令,如“!uptime”;

(5) 其他ipython有很多magic函數,可通過使用%lsmagic枚舉;

%run:運行python文件

%edit:使用編輯器打開當前函數編輯

%save:把某些歷史記錄保存到文件

%debug:激活debug程序

等等,後面會講到

(6)ipython有很多快捷鍵

(7)ipython的擴展宏系統、storemagic持久化宏、變量、別名;以及autoreload自動重載等功能;

下面挑選幾個典型的加以說明:

(1)Python對象在ipython環境下排版得更好,格式化更加美觀。比如對於一個字典類型data。

你們要的Python數據分析庫,Ipython的開發實戰

這是原生python下顯示的結果,很不美觀, 因為當字典很長的時候,很難看。

你們要的Python數據分析庫,Ipython的開發實戰

這是ipython下的輸出格式,可以看見,字典排列的很美觀,非常易於查看。

(2)提供更強大的交互體驗

我們都知道,在python原生開發條件下,單下劃線“_”表示的是最近的一個輸出結果,但是ipython則在此基礎之上做出了更強大的功能。因為原生Python編輯器不僅醜,而且是沒有行號的,但是ipython提供了行號,這不僅更好看,而且有很多妙用哦,如下:

_ :表示最近的一個輸出結果;

__ :表示最近的兩個輸出結果;

_行號 :查看指定行的那個變量的結果

_i行號:查看指定行號輸入的變量名稱

示例如下:

你們要的Python數據分析庫,Ipython的開發實戰

注意:這裡一定要輸出a、b,也就是說,如果上面沒有第二行和第四行,那是不行的,像下面這樣

a=100

_

這時會報錯的,因為_和__針對的是最近一個和最近兩個輸出了的,沒有輸出就不行了。

你們要的Python數據分析庫,Ipython的開發實戰

注意:

(a)_4 表示的是查看第四行輸出的變量,但是這裡如果改為_3 就不行了,因為第三行之定義了b=200,並沒有輸出,所以

_行號 只能夠用在輸出的行號上面。

(b) 但是 _i行號,不管是用在輸出還是輸入上面都是沒有問題的。

如何判斷是輸出還是輸入?前面是In的表示輸入,是Out表示輸出

Ipython的內省

ipython相較於原生的python,提供了更加強大的內省功能,所謂內省,也稱之為內視,即 object introspection,主要有以下一些常見的方法:

object? 或者?object :顯示該對象的一些通用信息,注意python裡面一切皆對象哦,包括函數、類。

object?? 或者??object:兩個問號顯示詳細信息,如果是類或者是函數,還會顯示源代碼。即將問號放在前面和後面都可以。

通配符*匹配:如

numpy.*load*? 這會顯示所有的包含有load的函數

numpy.*sort? 這會顯示所有以sort結尾的函數

你們要的Python數據分析庫,Ipython的開發實戰

Ipython快捷鍵

Ctrl-P 或上箭頭鍵 後向搜索命令歷史中以當前輸入的文本開頭的命令

Ctrl-N 或下箭頭鍵 前向搜索命令歷史中以當前輸入的文本開頭的命令

Ctrl-R 按行讀取的反向歷史搜索(部分匹配)

Ctrl-Shift-v 從剪貼板粘貼文本

Ctrl-C 中止當前正在執行的代碼

Ctrl-A 將光標移動到行首

Ctrl-E 將光標移動到行尾

Ctrl-K 刪除從光標開始至行尾的文本

Ctrl-U 清除當前行的所有文本譯註12

Ctrl-F 將光標向前移動一個字符

Ctrl-b 將光標向後移動一個字符

Ctrl-L 清屏

下面介紹一下第一個和第二個快捷鍵,比如有如下代碼:

你們要的Python數據分析庫,Ipython的開發實戰

當輸入a之後,然後按Ctrl+P,或者是按向上的方向鍵,則會依次顯示已a開頭的變量,依次是a、abcd、abc、a,不僅如此,很久之前在ipython裡面輸入過的變量,只要是以a開頭的,都能夠顯示,知道最開始的那個以a開頭的位置,如果是Ctrl+N或者是向下的方向鍵,則正好相反。

魔術命令——magic command

什麼是ipython的魔法命令?

所謂的魔術命令,是指那些給我們提供方便,輕鬆控制ipython交互系統的命令,可以這樣去理解,魔術命令可以看成是ipython交互環境下面的命令行程序,其中很多還有一些命令行參數選項。

%quickref :可以顯示ipython的快速參考

%magic :可以查看到底有哪些模式命令(這個方法會顯示每一個命令的詳細信息,因此會很多)

%lsmagic :這裡只會顯示模式命令的名字,會比較簡潔,查看起來更方便

%命令? 或者是%命令??:當我們想要查看某一命令的詳細信息,我們可以使用同前面類似的方法,在魔術命令後面添加一個或者是兩個問號??來查看詳細信息。

默認情況下,魔術命令總是以百分號%開頭,但這不是必須的,我們也可以不使用百分號,我們也可以直接使用不帶百分號的魔術命令,這稱之為“自動魔術命令——automagic”如:

magic 這會得到和 %magic一樣的效果,但是需要注意的是,不使用百分號時,不能出現和魔術命令同名稱的變量,否則顯示的就是變量了。那到底是使用百分號還是不使用百分號呢?事實上,我們也是可以自由控制的,通過%automagic來控制,

默認情況下,它是開啟的,即我們可以使用無%的魔術命令,只要與變量名不衝突即可,我麼也可以關閉,如下:

你們要的Python數據分析庫,Ipython的開發實戰

此時,再次輸入magic命令時,顯示:

你們要的Python數據分析庫,Ipython的開發實戰

顯示magic是不存在的,因為已經關閉了。此時必須使用%開頭

如何控制它的開還是關閉呢?

%automagic - on, 1 #此時打開

%automagic - off, 0 #此時關閉

1、%run——運行一個Python腳本

即在ipython中我不僅可以運行代碼,我還可以運行一個已知的python腳本文件,就像是在命令行中的使用是一樣的,比如有一個以下的Python文件:

你們要的Python數據分析庫,Ipython的開發實戰

現在我們在ipython裡面輸入如下代碼:

你們要的Python數據分析庫,Ipython的開發實戰

我們發現,腳本文件裡面的變量,我們依然可以使用,一般格式如下:

%run C:\\Users\\XinAir\\Desktop\\test.py 命令行參數(如果有命令的話)

這個和cmd模式之下的

python C:\\Users\\XinAir\\Desktop\\test.py 命令行參數(如果有命令的話) 兩者是不是異曲同工。

不僅如此,我不僅能夠直接使用腳本文件裡面的代碼,腳本文件也可以使用ipython環境中的變量,如下:

你們要的Python數據分析庫,Ipython的開發實戰

我們發現,不僅可以直接使用腳本文件中的變量、函數,還可以給腳本文件使用ipython本身的變量,除此之外,我還可以使用下面語句:

%run -i C:\\Users\\XinAir\\Desktop\\test.py 這個地方的-i是可選參數,可以要,也可不要代表的就是interactive(交互)的意思。

2、%paste或者是%cpaste——執行剪切板中的代碼

很多人可能覺得之好像沒什麼用,實際上,它的用處非常大,我們在編寫代碼的時候,我們希望執行某一小段代碼進行相關的測試,但是我們又不想專門再建立一個py文件,所以我們可以將代碼複製或者是剪切一下,這個時候代碼進入了剪切板,然後打開ipython,此時我們有三種處理辦法

第一:直接使用Ctrl+V進行粘貼,然後測試代碼

第二:輸入魔術命令%paste,回車,這個時候在剪切板中的代碼自動粘貼了進來,不再需要手動Ctrl+V了

第三:輸入魔術命令%cpaste,回車,然後再手動Ctrl+V,將代碼複製進來,注意最後一定要按兩個減號“--”退出才行哦,實際上它給了提示的。如下

你們要的Python數據分析庫,Ipython的開發實戰

3、%timeit 和%time 檢測任意Python語句的執行時間

你們要的Python數據分析庫,Ipython的開發實戰

注意,執行的語句要和%timeit放在同一行,%timeit python語句

%time指一次執行代碼的總體時間

%tinmeit指多次執行代碼的平均時間,使用這個命令是因為每次執行同一個代碼的時間是不一樣的,所以通過多次執行代碼求出的平均時間更能說明代碼的總體執行時間

4、%who和%who_ls和%whos——查看當前interactive環境中的變量

他們都可以查看當前的ipython環境中有哪些變量,但有所區別

%who :依次顯示出每一個變量的名稱

%who_ls:以列表的形式返回

%whos:顯示出每一個變量的詳細信息

你們要的Python數據分析庫,Ipython的開發實戰

5、%hist——查看歷史命令

你們要的Python數據分析庫,Ipython的開發實戰

6、刪除ipython環境中的變量

%xdel variable 刪除單個變量的引用

%reset指刪除interactive命名空間中全部的變量名

7、其他常用魔術命令

%debug 從最新的異常跟蹤的底部進入交互式調試器

%pdb 在異常發生後自動進入調試器

%page OBJECT 通過分頁器打印輸出object

%prun statement 通過cprofile執行statement,並打印分析器的輸出結果

8、ipython開發環境與cmd之間的互相切換

在ipython交互情況下,直接輸入命令 !cmd 即可進入cmd模式

在cmd模式下直接輸入 ipython 可以再次回到 ipython模式

關於IPython的介紹,咱們先說到這,因為篇幅限制,還有很多沒有講到。如果覺得比較晦澀,需要視頻資料的話,可以點擊【】來欣賞獲取吧。

你們要的Python數據分析庫,Ipython的開發實戰


分享到:


相關文章: