Python數據處理:IPython使用學習筆記

Python數據處理:IPython使用學習筆記
Python數據處理:Numpy 學習筆記
Python數據處理:Pandas 學習筆記


轉載並改編自《IPython使用學習筆記》,原文寫得很好,但有些地方還待完成。我轉載過來做了補充,進一步學習下,在此感謝原作者

 


本文是學習《利用python進行數據分析》第三章 IPython:一種交互式計算和開發環境的筆記,共享給大家,同時爲自己作爲備忘用。

安裝ipython用pip即可。ps.博主用的是win7系統,所以接下來的都是在windows系統下操作的。


一.Ipython基礎

啓動:開始菜單-輸入cmd-回車-輸入ipython

初嘗試

可用看到使用ipython,數據輸出的格式很規範,容易閱讀


二.Tab鍵自動完成

ipython在shell中輸入表達式時,只要按下Tab鍵,當前命令控件中任何與輸入的字符串相匹配的變量(對象、函數等)就會被找出來。

ps.之前我發現我的ipython沒有Tab鍵自動補全功能,tab鍵的功能是縮進。最後 pip install pyreadline即可解決。

下面這個例子,輸入b.後按下<tab>鍵即可得到下圖的結果。


三.內省

1. 在變量的前面或後面加上一個問號(?)就可以將有關該對象的一些通用信息顯示出來。這就叫做對象的內省

如果對象是一個函數或實例方法,則其docstring也會被現實出來。

2. 使用??還將顯示出該函數的源代碼。

3. 一些字符串配以通配符(*)即可顯示出所有與該通配符表達式相匹配的名稱。

例如,我們可以列出Numpy頂級命名空間中含有“load”的所有函數

簡直太棒了有木有!!!!!!!


四.%run命令

1. 在ipython會話環境中,所有文件都可以通過%run命令當做Python程序來運行。

輸入 %run 路徑+python文件名稱即可。

ps.《集體智慧編程》裏面代碼的執行可以用這個

2. 例子: 首先創建一個python腳本 :basic.py

在ipython中,可用使用%run 命令來執行這個腳本

可以看到,當%run命令執行完成後,ipython的當前執行環境中,就有了a、b、r這些變量,可以自由調用,這樣非常方便功能擴展和調試


五.中斷正在執行的代碼

按下Ctrl-C就會引發一個KeyboardInterrupt。除了一些非常特殊的情況下,絕大部分python程序都會立即停止執行


六.執行剪貼板中的代碼

  • 書上說使用ctrl+shift+v將剪貼板的代碼片段粘貼出來,然而windows系統似乎不可行,所以鼠標右鍵粘貼好了。
  • %paste可以承載剪貼板中的一切文本,並在shell中以整體形式執行。
  • %cpaste跟%paste差不多,只不過它多出了一個用於粘貼代碼的特殊提示符而已。如果發現粘貼的代碼有錯,只需要按下ctrl+c即可終止%cpaste提示如。

七.鍵盤快捷鍵

其實不到真正使用我也記不住23333,在此粘貼給大家作爲備忘。

  1. Ctrl-P    或上箭頭鍵 後向搜索命令歷史中以當前輸入的文本開頭的命令
  2. Ctrl-N   或下箭頭鍵 前向搜索命令歷史中以當前輸入的文本開頭的命令
  3. Ctrl-R   按行讀取的反向歷史搜索(部分匹配)
  4. Ctrl-Shift-v   從剪貼板粘貼文本
  5. Ctrl-C   中止當前正在執行的代碼
  6. Ctrl-A   將光標移動到行首
  7. Ctrl-E   將光標移動到行尾
  8. Ctrl-K   刪除從光標開始至行尾的文本
  9. Ctrl-U   清除當前行的所有文本譯註12
  10. Ctrl-F   將光標向前移動一個字符
  11. Ctrl-b   將光標向後移動一個字符
  12. Ctrl-L   清屏

八.異常和跟蹤

使用%run命令行的方式運行腳本或直接執行命令行,如果出錯,則在默認情況下,IPython會打印出整個錯誤路徑和異常的詳細信息,對於每個方法堆棧的執行情況都打印的比較清楚。與標準Python殼比,使用Ipython排除程序錯誤更加高效。


九.魔術命令

粘貼在此以作備忘

  • %quickref 顯示IPython的快速參考
  • %magic 顯示所有魔術命令的詳細文檔
  • %debug 從最新的異常跟蹤的底部進入交互式調試器
  • %hist 打印命令的輸入(可選輸出)歷史
  • %pdb 在異常發生後自動進入調試器
  • %paste 執行剪貼板中的Python代碼
  • %cpaste 打開一個特殊提示符以便手工粘貼待執行的Python代碼
  • %reset 刪除interactive命名空間中的全部變量/名稱
  • %page OBJECT 通過分頁器打印輸出OBJECT
  • %run script.py 在IPython中執行一個Python腳本文件
  • %prun statement 通過cProfile執行statement,並打印分析器的輸出結果
  • %time statement 報告statement的執行時間
  • %timeit statement 多次執行statement以計算系綜平均執行時間。對那些執行時  間非常小的代碼很有用
  • %who、%who_ls、%whos 顯示interactive命名空間中定義的變量,信息級別/冗餘度可變
  • %xdel variable 刪除variable,並嘗試清除其在IPython中的對象上的一切引用

十.基於Qt的富GUI控制檯

Ipython團隊開發了一個基於Qt框架(其目的是爲終端應用程序提供諸如內嵌圖片、多行編輯、語法高亮之類的富文本剪輯功能)的GUI控制檯。

在cmd啓動ipython時,使用

ipython qtconsole --pylab=inline

來啓動的話可爲其添加繪圖功能。

ps.這一步剛開始無法執行,我的解決方法是:

pip install qtconsole,就可以運行了- -..


十一.matplotlib集成與pylab模式

通常我們通過在啓動Ipython時加上--pylab標記來集成matplotlib

注意空格啊~是

ipython --pylab

執行效果如下: 


十二.使用歷史命令

十三.搜索並重用歷史命令

歷史命令用上下箭頭就好啦,ctrl+p和ctrl+n 太麻煩啦。

ctrl+r用於實現部分增量搜索,按下ctrl+r並輸入你想搜索的行中的幾個字符。按下ctrl+r將會循環搜索歷史命令中每一條與輸入相符的行。


十四.輸入和輸出變量

ipython將最近的兩個輸出結果保存在_(一個下劃線)和__(兩個下劃線)變量中

輸入的文本被保存在名爲_iX的變量中,其中X是輸入行的行號。比如說,在輸入完27行後,就會產生兩個新變量_27(輸出變量)和_i27(輸入變量)

我這兒就拿第八行舉例子吧2333


十五.記錄輸入和輸出

執行%logstart既可開始記錄日誌


 十六.與操作系統交互

 


十七.shell命令和別名

在ipython中,以感嘆號(!)開頭的命令行表示其後的所有內容需要在系統shell中執行。

##再啓動一個python解釋器

在使用!時,ipython還允許使用當前環境中定義的python值。只需要在變量名前面加上$即可

魔術命令%alias可以爲shell命令自定義簡稱。


十八.目錄書籤系統

ipython有一個簡單的目錄書籤系統,它使你能保存常用目錄的別名以實現快速跳轉。

命令 %bookmark

我想設定E:\WorkSpace\Python\BasicDemo目錄爲基本目錄,會經常使用或者跳轉到這裏,因此設置書籤WS,指向此地址:

%bookmark WS E:\WorkSpace\Python\BasicDemo

 定義好bookmark後,可以使用cd方法進入這個目錄

cd WS

 

 還可以使用%bookmark -l命令來查看所有設置了的書籤

%bookmark -l

 


十九.軟件開發工具

(一)交互式調試器

調試代碼的最佳時期之一就是錯誤剛剛發生那會兒。

%debug命令(在發生異常之後馬上輸入)將會調用哪個“事後調試器”,並直接跳轉到引發異常的那個棧幀(stack frame)

這兒需要打開ipython_bug.py文件,需要的同學可以問我要,路徑還需要自己改一改。

在這個調試器中,可以執行任意python代碼並查看各個棧幀中的一切對象和數據(也就是解釋還“留了條生路”的那些)。

默認從最低級開始的(即錯誤發生的地方)。

輸入u(up)和d(down)即可在棧跟蹤的個級別之間的切換

執行%Pdb命令可以讓ipython在出現異常之後自動調用調試器。

此外,調試器還可以爲代碼開發工作提供幫助,尤其是當你想要設置斷點或對函數、腳本進行單步調試以查看各條語句的執行情況時。

實現這個目的的方式有幾個:

*********************待完善

(二)調試器的其它使用場景

*********************待完善

(三)測試代碼的執行時間:%time和%timeit

有時候你可能會希望瞭解某個複雜計算過程中到底是哪些函數佔用的時間最多。

ipython專門提供了兩個魔術函數(%time和%timeit)以便自動完成該過程。

%time一次執行一條語句,然後報告總體執行時間。

例子:下面是一個擁有60萬字符串的數組,以及兩個不同的“能夠選出其中以foo開頭的字符串”的方法:

#一個非常大的字符串數組
strings = ['foo','foobar','baz','qux','python','Guido Van Rossum']*100000
method1 = [x for x in strings if x.startswith('foo')]
mathod2 = [x for x in strings if x[:3] == 'foo']

通過%time來測試:

啦啦啦 差距出來了。

但是這並不是一個非常精確的結果,如果你對相同的語句多次執行%time的話,就會發現其結果是會變的。(親測真的會變233看下圖)

爲了得到更爲精確的結果,需要使用魔術函數%timeit,對於任意語句,它會自動多次執行以產生一個非常精確的平均執行時間。

(四)基本性能分析:%prun和%run -p

在進行數據分析的時候,往往需要檢測代碼的性能。Python主要的代碼分析工具是cProfile模塊,cProfile運行一段代碼,並且記錄下每個函數所花費的時間。命令行爲:

!python3 -m cProfile filename.py

!python3 -m cProfile -s cumtime filename.py              # 加cumtime列的排序

而除了上面的python命令行外,IPython還提供了非常簡易的指令來使用cProfile: %prun和%run,%prun不是運行.py文件,而是運行任意的聲明

%prun -l 10 -s cumtime someModule.someFunction()

(五)逐行分析函數性能

 

二十.Ipython HTML Notebook

IPython Notebook使用瀏覽器作爲界面,向後臺的IPython服務器發送請求,並顯示結果。在瀏覽器的界面中使用單元(Cell)保存各種信息。Cell有多種類型,經常使用的有表示格式化文本的Markdown單元,和表示代碼的Code單元。

每個代碼單元都有一個輸出區域,在Code單元中輸入代碼,按 Shift-Enter 將運行此代碼,代碼中最後一個表達式的值將輸出區域顯示。如果希望屏蔽輸出,可以在最後一條語句之後添加一個分號:”;”。此外,代碼中還可以使用 print語句在輸出區域中顯示信息。

在Markdown單元中還可以直接使用Html和Javascript。

1. 啓動notebook 

#啓動命令:命令行輸入
jupyter notebook
# 如果jupyter命令不存在,則要先安裝jupyter,命令:pip install jupyter

 命令按回車後,會彈出一個瀏覽器對話框,地址默認一般是http://localhost:8888/tree#

 有時候還會讓輸入用戶密碼,找到%安裝路徑%/Jupyter/runtime/notebook_cookie_secret下的token,複製輸入到瀏覽器對話框中,就能登錄成功

2. 可以通過文件樹進入相應的文件夾中;右側的新建選項,可以在對應的文件夾中創建必要的文件

3. 點擊python3,可以進入python交互窗口

如下:

4. 通過點擊Text File,可以編輯其他格式的文本或代碼

其中:

  • 菜單File可以執行open()、save()等基本操作;
  • Edit可以切換不同的編輯工具,比如非常熟悉的Linux Vim編輯器,Sublime Text編輯器等;
  • View改變編輯器視圖效果,顯示或隱藏header和行數等
  • Language可以選擇編輯文本的語言,例如C、Java、Python等,支持的語言非常多

     

 


二十一.利用ipython提高代碼開發效率的幾點提示

(一)重新加載模塊依賴項

(二)代碼設計提示

1.保留有意義的對象和數據

2.扁平結構要比嵌套結構好

3.無懼大文件

二十一.高級ipython功能

(一)讓你的類對ipython更加友好

(二)個性化和配置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章