Python數據分析(一): ipython 技巧!

分類:IT技術 時間:2017-10-04

不一定非得使用Jupyter Notebook,試試ipython命令行

安裝 ipython

我只試過Windows 10環境下的。

1.安裝python安裝包之後,應該就有ipython了。

2.安裝anaconda,這個做機器學習或數據分析要是需要的,這個裝完之後,也會有ipython。(建議使用anaconda,國內鏡像地址:https://mirrors.tuna.tsinghua.edu.cn/)

啟動ipython

1.命令行輸入ipython即可啟動。

2.或者找一下快捷方式,也可以啟動。

幫助?

1.help,python內置了help方法,相信大家都會這個。例如:help(len),然後就會顯示len方法的幫助文檔:

2.?,ipython獨有的提供了一個快捷字符?,它也可以訪問幫助文檔,例如:

查看源碼??

使用?? 來查看python的源碼:

但是,如果源碼不適用python寫的(有些內置的方法使用C等語言寫的),就會出現如下效果:

自動完成 Tab

Tab鍵在ipython中輸入時可提供自動完成或瀏覽功能。

有時候優點像python內置的dir()函數,但強大得多。

這是L.後邊點擊Tab的效果。下面是再輸入一個字母c之後的智能提示的效果:

提示私有屬性

使用Tab默認只顯示public和external屬性/方法,如果想顯示私有屬性,那麽按約定,你要先輸入一個下劃線_

import的時候也可以使用Tab

通配符*

有時候tab不夠用,那就使用通配符 * 。

例如:顯示以Error結尾的對象:

註意後邊還有個?。

*可以匹配任何字符串包括空字符串。

另一個例子,包含xxx字符串:

快捷鍵

導航類:

Ctrl+a,移動光標到行首

Ctrl+e,移動光標到行尾

Ctrl+b(或←),向左移動一個字符

Ctrl+f(或→),向右移動一個字符

輸入類:

Backspace:刪除行中前一個字符

Ctrl+d,刪除行中下一個字符

Ctrl+k,從光標位置剪切到行尾。

Ctrl+u,從行首剪切到光標位置。

Ctrl+y,粘貼之前剪切的文字。

Ctrl+t,調換前兩個字符的位置。

命令歷史類:

Ctrl+p,前一個命令,和↑好像一樣。

Ctrl+n,後一個命令,和↓好像一樣。

Ctrl+r,倒序搜索。

其中Ctrl+r是挺有用的,例如:

按Ctrl+r後,輸入a,就會倒序搜索之前的輸入。

如果有相同的歷史搜索結果的話,你可以點擊多次Ctrl+r繼續往前翻。

其它快捷鍵:

Ctrl+l,清屏

Ctrl+c,中斷當前python命令

Ctrl+d,退出ipython

 

魔法命令

復制多行代碼 %paste,%cpaste

在ipython命令行中使用Ctrl+c復制多行代碼經常會出現問題(縮進等問題),使用%paste命令,解決了這個問題。

輸入%paste,然後回車,就會把你剪切盤裏面的內容完美的復制進來並執行

%cpaste,和%paste類似,但是它會提供一個交互界面,以便輸入多個代碼塊。

執行外部代碼 %run

直接舉例:

為代碼執行計時:%timeit,%%timeit

對單行代碼的執行計時:%timeit:

對多行代碼執行計時:%%timeit:

魔法命令的幫助文檔:

使用%maigc,可以查看所有魔法命令及其文檔。

使用%lsmagic,可以列出所有的魔法命令。

輸入輸出歷史

使用ipython shell,您一定對左邊這些in,out特別熟悉。

但是,它們不是裝飾品,它們倆是變量

In和Out是兩個變量,並且隨著命令的輸入,實時更新。

其中:

In是一個list,而Out是一個Dictionary。

所以可以這樣查看具體的In和Out:

其中需要註意的是,並不是所有的In都有輸出,例如[37]。

下劃線和前一個輸出

使用一個下劃線 _ 來獲取前一個輸出結果,它是個變量,實時更新的。

使用兩個下劃線 __ 可以獲取倒數第二個輸出,使用三個下劃線 ___ 獲取倒數第三個輸出。(沒有輸出的命令行不計入在內)

最多也只能使用三個下劃線,超過三的話可以使用Out[X]或者_X來獲取之前的輸出:其中X是命令行號,不是往前數的個數。

抑制輸出

有時候在輸入命令後,我們不想讓其輸出結果,那就這樣,在行的最後邊加一個 ; 分號。

這樣的話,第76行也就沒有輸出了,Out[76]就不存在了。

相關的魔法命令:%history

使用%history可以一起獲取前面多個命令:

註意其參數-n後邊跟的是 命令行號的區間。

Shell commands和IPython交互

你可以在ipython中使用任何shell commands(暫時叫系統命令行的命令吧),只要在前邊加一個嘆號 !

(其實,對於常見的shell命令,直接輸入就會好用。。因為automagic屬性默認是on的,詳見後邊)

從Shell向ipython傳值

直接寫個賦值表達式就可以,等號的右邊是Shell命令:

註意:傳進來的值的類型不是list,而是:IPython.utils.text.SList。

從ipython向Shell傳值:

使用{變量名}的形式賦值:

註意:不可以使用 !cd 這個文件系統導航命令。

Shell相關的魔法命令

如果想要在ipython中進行系統導航,那麽應該使用%cd這個魔法命令。

 

automagic

如果把automagic屬性設置為on,那麽魔法命令前邊就不需要%這個符號了。

默認automagic是on的,你可以輸入automagic,那麽它就會在on/off之間切換。

因為魔法命令包含了很多常見的shell命令,例如%cd,%pwd,%ls等等等等。所以默認情況下直接輸入常見的shell命令就會好用。

Exception顯示的詳細程度

如果解釋器擊中異常的時候,可以在traceback中查看異常信息。

使用%xmode可以控制異常信息的詳細程度:

%xmode 只有一個參數,後選項從簡到繁是 Plain,Context,Verbose。我的電腦默認是Verbose。

Debugging

%xdebug 魔法命令。

在發生異常後,輸入%xdebug,會進入debug模式ipdb。在這裏輸入變量可以查看變量的值,也可以執行python命令!

如果你想在發生任何異常的時候就進入debug模式,那麽可以把pdb設置為on:

此外,如果你想在運行外部腳本的時候直接進入debug模式,那麽就應該輸入這個命令:

%run -d

部分Debug命令(ipdb模式下):

l(ist),顯示在文件中的當前位置。

h(elp),幫助

q(uit),退出Debugger和程序。

c(ontinue),退出Debugger,繼續執行程序。

n(ext),執行程序的下一步

<enter>,重復上一個命令

p(rint),打印變量

s(tep),進入子程序

r(eturn),從子程序跳出

分析(Profiling)和計時模式

%time,適用於對單個長時間運行的表達式的程序計時。

%timeit,適用於對循環類的單行程序計時,它更準確。

註意:%timeit的結果通常比%time更快。

%prun,使用分析器運行代碼

此外,還可以安裝第三方分析工具,例如%lprun(逐行分析),%memit(單個表達式內存分析),%mprun(逐行內存分析)等等。

 

 

下一篇文章,寫一下Numpy的使用技巧


Tags: ipython 使用 一個 輸入 python 安裝

文章來源:


ads
ads

相關文章
ads

相關文章

ad