獨家 | 10 個簡單小竅門帶你提升Python數據分析速度(附代碼)

簡介

提示和技巧老是很是有用的,在編程領域更是如此。有時候,小小的黑科技能夠節省你大量的時間和精力。一個小的快捷方式或附加組件有時會是天賜之物,能夠成爲實用的效率助推器。因此,我在這裏介紹下本身編程時最喜歡使用的一些提示和技巧,在這篇文章中彙總起來呈現給你們。有些多是你們熟悉的,而有些多是新鮮的,我相信它們會爲你下一次處理數據分析的項目時提供便利。html

1. 預覽Pandas中的數據框數據(Dataframe)

分析預覽(profiling)是一個幫助咱們理解數據的過程,在Python中Pandas Profiling 是能夠完成這個任務的一個工具包,它能夠簡單快速地對Pandas 數據框進行搜索性數據分析。Pandas中df.describe()和df.info()函數一般能夠實現EDA過程的第一步,但若是隻是給出很是基礎的數據預覽並不能對分析那些大型的數據集提供幫助。另外一方面來看,Pandas Profiling函數能經過一行代碼來展現出大量的信息,而在交互式HTML報告中也是這樣。node

對於一個給定的數據集,Pandas Profiling 工具包將會計算出下面的統計信息:python

image.png

由pandas profiling包算出的統計信息git

代碼示例:

  • 安裝

Python2.x的版本中,運用pip或conda安裝pandas-profiling資源包:github

pip install pandas-profiling
or
conda install -c anaconda pandas-profiling複製代碼
  • 使用

如今用一個古老的泰坦尼克數據集來演示多功能python profiler的結果:shell

#importing the necessary packages
import pandas as pd ##使用pandas資源包
import pandas_profiling ##使用新安裝的pandas profiling資源包
df = pd.read_csv('titanic/train.csv') ##讀取數據造成數據框
pandas_profiling.ProfileReport(df) ##使用pandas profiling分析數據複製代碼

這一行就是你須要在jupyter notebook中造成數據分析報告所需的所有代碼。這個數據報告十分詳細,包括了全部必要的圖表。編程

640 (4).gif

圖1.1bash

這個報告也能夠用下面的代碼造成交互HTML文件(interactive HTML file)導出:數據結構

profile = pandas_profiling.ProfileReport(df)
profile.to_file(outputfile="Titanic data profiling.html") ##造成Titanic data profiling.html網頁複製代碼

640 (5).gif

圖1.2函數

2. Pandas圖表(Plot)的交互性

Pandas中有一個內置的.plot()函數做爲數據框(Dataframe)的一部分,但由於這個函數呈現的可視化並非交互的,這使它的功能沒那麼吸引人。並且,使用pandas.DataFrame.plot()函數繪製圖表也並不容易。若是咱們想要在沒有對代碼進行重大修改的狀況下用pandas繪製交互式圖表要怎麼辦?嗯,能夠經過Cufflinks資源包來幫助你完成這一目的。

Cufflinks資源包將功能強大的plotly和靈活易用的pandas結合,很是便於繪圖。如今咱們來看看怎麼安裝和在pandas中使用這個資源包。

代碼示例:

  • 安裝

Python2.x的版本中,使用pip安裝plotly和cufflink:

pip install plotly # Plotly is a pre-requisite before installing cufflinks(plotly先於cufflinks安裝)
pip install cufflinks
複製代碼
  • 使用

調用方法:

#importing Pandas 
import pandas as pd ##使用pandas資源包
#importing plotly and cufflinks in offline mode
import cufflinks as cf ##使用cufflinks 和plotly資源包
import plotly.offline
cf.go_offline() ##使用cufflink包中的函數
cf.set_config_file(offline=False, world_readable=True)複製代碼

下面來看一下泰坦尼克數據集所展示的魔力:

df.iplot()
複製代碼

640 (6).gif

圖2.1

image.png

圖2.2

右邊的可視化展現的是靜態的線狀圖,而左邊的圖是交互式的,而且更加詳細,兩個圖在代碼上沒有重大的變化。

Github的連接中將會有更多的示例:

github.com/santosjorge…

3. 一點點魔法

Magic命令是Jupyter Notebook中的一組便捷功能,它們旨在解決數據分析中一些常見的問題。你能夠用%Ismagic來查閱全部的Magic 命令。

image.png

上圖列舉了全部可用的Magic 函數

Magic命令有兩大類:行magic命令(line magics),以單個% 字符爲前綴,單行輸入操做;單元magics命令(cell magics),以雙%% 字符做爲前綴,能夠在多行輸入操做。若是設置爲1,咱們使用magic 函數時不須要鍵入%。

下面讓咱們來看一下,在常見的數據分析任務中一些可能會用到的命令。

  • % pastebin

% pastebin將代碼上傳到Pastebin並返回一個連接。Pastebin是一個線上內容託管服務,咱們能夠在上面存儲純文本,如源代碼片斷,所造成的連接也能夠分享給他人。事實上,Github gist也相似於pastebin,只是它帶有版本控制。

代碼示例:

來看一下這個file.py的python代碼文件中的內容:

#file.py
def foo(x):
    return x複製代碼

在Jupyter Notebook中使用% pastebin造成一個pastebin的連接。

image.png

  • %matplotlib notebook

%matplotlib inline函數用於在Jupyter筆記本中呈現靜態matplotlib圖。咱們能夠嘗試用notebook來代替inline獲得可輕鬆地縮放和調整大小的繪圖,但要確保在套用matplotlib資源包以前調用該函數。

image.png

%matplotlib inline vs %matplotlib notebook

  • %run

%run函數用於jupyter notebook中運行一個python腳本文件。

  • %%writefile

%% writefile將執行單元的內容寫入文件。下面的這段代碼將寫入名爲foo.py的文件並保存在當前目錄中。

image.png

  • %%latex

%% latex函數將單元格內容以LaTeX的形式呈現。它對於在單元格中編寫數學公式和方程頗有用。

image.png

4. 發現並減小錯誤

交互式調試器(interactive debugger)也是一個Magic函數,但我必須給它歸個類。若是你在運行代碼單元出現異常時,能夠在新行中鍵入%debug運行。這將打開一個交互式調試環境,它將您告訴你代碼發生異常的位置。你還能夠檢查程序中分配的變量值,並在此處執行操做。點擊q可退出調試器。

640 (7).gif

5. 輸出也可如此美觀

若是你想生成美觀的數據結構,pprint是首選的模塊。它在輸出字典數據或JSON數據時特別有用。下面來看一下print 和pprint輸出的一個例子:

image.png

6. 讓提示更突出

能夠在你的Jupyter Notebook中使用提示/註釋框來突出顯示任何重要的內容。註釋的顏色取決於指定的提示類型。只需在代碼中加入須要突出顯示的內容便可。

  • 藍色提示框:註釋

代碼示例:

<div class="alert alert-block alert-info">#提示框開頭
<b>Tip:</b> Use blue boxes (alert-info) for tips and notes. 
If it’s a note, you don’t have to include the word 「Note」.#提示框內容
</div>#提示框結尾複製代碼

輸出結果:

image.png

  • 黃色提示框:警告

代碼示例:

<div class="alert alert-block alert-warning">
<b>Example:</b> Yellow Boxes are generally used to include additional examples or mathematical formulas.
</div>複製代碼

輸出結果:

image.png

  • 綠色提示框:成功

代碼示例:

<div class="alert alert-block alert-success">
Use green box only when necessary like to display links to related content.
</div>複製代碼

輸出結果:

image.png

  • 紅色提示框:高危

代碼示例:

<div class="alert alert-block alert-danger">
It is good to avoid red boxes but can be used to alert users to not delete some important part of code etc. 
</div>複製代碼

輸出結果:

image.png

7. 輸出一個執行單元中的全部結果

下面來看一下Jupyter Notebook格中包含的幾行代碼:

In[1]: 10+5          
       11+6
Out[1]:  17複製代碼

一般一個執行單元只輸出最後一行的結果,而對於其餘輸出咱們須要添加print()函數。好吧,事實證實咱們能夠經過在Jupyter Notebook開頭添加如下代碼來輸出每一行的結果:

from IPython.core.interactiveshell import InteractiveShell  
InteractiveShell.ast_node_interactivity = "all"複製代碼

如今全部結果能夠被一一輸出:

In[1]: 10+5          
       11+6
       12+7
Out[1]: 15
Out[1]: 17
Out[1]: 19複製代碼

若是要恢復成初始設定:

InteractiveShell.ast_node_interactivity = "last_expr"複製代碼

8. 使用‘i’選項運行Python腳本文件

在命令行中運行python腳本的典型方法是:python hello.py。可是,若是在運行相同的腳本文件時額外添加一個 -i,例如python -i hello.py,這會帶來更多好處。咱們來看看是怎麼回事:

首先,一旦程序結束,python不會退出編譯器。所以,咱們能夠檢查變量的值和程序中定義的函數的正確性。

其次,咱們能夠輕鬆地調用python調試器,由於咱們仍然在編譯器中:

import pdb
pdb.pm()複製代碼

這將把咱們帶到代碼發生異常的位置,而後咱們能夠去處理代碼。

image.png

源代碼連接:

www.bnikolic.co.uk/blog/python…

9. 自動添加代碼註釋

Ctrl / Cmd + / 命令將自動註釋執行單元中的選定行。再次點擊組合將取消註釋相同的代碼行。

10. 刪除容易恢復難

你有沒有不當心誤刪過Jupyter Notebook中的執行單元呢?若是有,這裏有一個能夠撤消該刪除操做的快捷方式。

  • 若是你誤刪了執行單元的內容,能夠經過點擊CTRL/CMD+Z輕鬆恢復。
  • 若是你想要恢復所刪除執行單元的全部內容,能夠點擊ESC+Z 或者 EDIT > Undo Delete Cells

文章來自阿里雲開發者社區

原文連接:developer.aliyun.com/article/716…

相關文章
相關標籤/搜索