天天看點

10個小技巧:快速用Python進行資料分析

一些小提示和小技巧可能是非常有用的,特别是在程式設計領域。有時候使用一點點黑客技術,既可以節省時間,還可能挽救“生命”。

一個小小的快捷方式或附加元件有時真是天賜之物,并且可以成為真正的生産力助推器。是以,這裡有一些小提示和小技巧,有些可能是新的,但我相信在下一個資料分析項目中會讓你非常友善。

Pandas中資料框資料的Profiling過程

Profiling(分析器)是一個幫助我們了解資料的過程,而Pandas Profiling是一個Python包,它可以簡單快速地對Pandas 的資料框資料進行探索性資料分析。

Pandas中df.describe()和df.info()函數可以實作EDA過程第一步。但是,它們隻提供了對資料非常基本的概述,對于大型資料集沒有太大幫助。而Pandas中的Profiling功能簡單通過一行代碼就能顯示大量資訊,且在互動式HTML報告中也是如此。

對于給定的資料集,Pandas中的profiling包計算了以下統計資訊:

由Pandas Profiling包計算出的統計資訊包括直方圖、衆數、相關系數、分位數、描述統計量、其他資訊——類型、單一變量值、缺失值等。

安裝

用pip安裝或者用conda安裝

pip install pandas-profiling	
 conda install -c anaconda pandas-profiling           

用法

下面代碼是用很久以前的泰坦尼克資料集來示範多功能Python分析器的結果。

#importing the necessary packages	
 import pandas as pd	
 import pandas_profiling	
df = pd.read_csv('titanic/train.csv')	
 pandas_profiling.ProfileReport(df)           

一行代碼就能實作在Jupyter Notebook中顯示完整的資料分析報告,該報告非常詳細,且包含了必要的圖表資訊。

還可以使用以下代碼将報告導出到互動式HTML檔案中。

profile = pandas_profiling.ProfileReport(df)	
profile.to_file(outputfile="Titanic data profiling.html")           

Pandas實作互動式作圖

Pandas有一個内置的.plot()函數作為DataFrame類的一部分。但是,使用此功能呈現的可視化不是互動式的,這使得它沒那麼吸引人。同樣,使用pandas.DataFrame.plot()函數繪制圖表也不能實作互動。如果我們需要在不對代碼進行重大修改的情況下用Pandas繪制互動式圖表怎麼辦呢?這個時候就可以用Cufflinks庫來實作。

Cufflinks庫可以将有強大功能的plotly和擁有靈活性的pandas結合在一起,非常便于繪圖。下面就來看在pandas中如何安裝和使用Cufflinks庫。

pip install plotly	
# Plotly is a pre-requisite before installing cufflinks	
pip install cufflinks           
#importing Pandas 	
 import pandas as pd	
 #importing plotly and cufflinks in offline mode	
 import cufflinks as cf	
import plotly.offline	
 cf.go_offline()	
 cf.set_config_file(offline=False, world_readable=True)           

是時候展示泰坦尼克号資料集的魔力了。

df.iplot()           
df.iplot() vs df.plot()           

右側的可視化顯示了靜态圖表,而左側圖表是互動式的,更詳細,并且所有這些在文法上都沒有任何重大更改。

Magic指令

Magic指令是Jupyter notebook中的一組便捷功能,旨在解決标準資料分析中的一些常見問題。使用指令%lsmagic可以看到所有的可用指令。

所有可用的Magic指令清單

Magic指令有兩種:行magic指令(line magics),以單個%字元為字首,在單行輸入操作;單元magic指令(cell magics),以雙%%字元為字首,可以在多行輸入操作。如果設定為1,則不用鍵入%即可調用Magic函數。

接下來看一些在常見資料分析任務中可能用到的指令:

% pastebin

%pastebin将代碼上傳到Pastebin并傳回url。Pastebin是一個線上内容托管服務,可以存儲純文字,如源代碼片段,然後通過url可以與其他人共享。事實上,Github gist也類似于pastebin,隻是有版本控制。

在file.py檔案中寫一個包含以下内容的python腳本,并試着運作看看結果。

#file.py	
 def foo(x):	
     return x           

在Jupyter Notebook中使用%pastebin生成一個pastebin url。

%matplotlib notebook

函數用于在Jupyter notebook中呈現靜态matplotlib圖。用notebook替換inline,可以輕松獲得可縮放和可調整大小的繪圖。但記得這個函數要在導入matplotlib庫之前調用。

%run

用%run函數在notebook中運作一個python腳本試試。

%run file.py	
%%writefile           

%% writefile是将單元格内容寫入檔案中。以下代碼将腳本寫入名為foo.py的檔案并儲存在目前目錄中。

%%latex

%%latex函數将單元格内容以LaTeX形式呈現。此函數對于在單元格中編寫數學公式和方程很有用。

查找并解決錯誤

互動式調試器也是一個神奇的功能,我把它單獨定義了一類。如果在運作代碼單元時出現異常,請在新行中鍵入%debug并運作它。這将打開一個互動式調試環境,它能直接定位到發生異常的位置。還可以檢查程式中配置設定的變量值,并在此處執行操作。退出調試器單擊q即可。

Printing也有小技巧

如果您想生成美觀的資料結構,pprint是首選。它在列印字典資料或JSON資料時特别有用。接下來看一個使用print和pprint來顯示輸出的示例。

讓你的筆記脫穎而出

我們可以在您的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>           

黃色警示框:警告

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

綠色警示框:成功

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

紅色警示框:高危

<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>           

列印單元格所有代碼的輸出結果

假如有一個Jupyter Notebook的單元格,其中包含以下代碼行:

In  [1]: 10+5          	
          11+6	
Out [1]: 17           

單元格的正常屬性是隻列印最後一個輸出,而對于其他輸出,我們需要添加print()函數。然而通過在notebook頂部添加以下代碼段可以一次列印所有輸出。

添加代碼後所有的輸出結果就會一個接一個地列印出來。

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

恢複原始設定:

InteractiveShell.ast_node_interactivity = "last_expr"           

使用'i'選項運作python腳本

從指令行運作python腳本的典型方法是:python hello.py。但是,如果在運作相同的腳本時添加-i,例如python -i hello.py,就能提供更多優勢。接下來看看結果如何。

首先,即使程式結束,python也不會退出解釋器。是以,我們可以檢查變量的值和程式中定義的函數的正确性。

其次,我們可以輕松地調用python調試器,因為我們仍然在解釋器中:

import pdb	
pdb.pm()           

這能定位異常發生的位置,然後我們可以處理異常代碼。

自動評論代碼

Ctrl / Cmd + /自動注釋單元格中的標明行,再次命中組合将取消注釋相同的代碼行。

删除容易恢複難

你有沒有意外删除過Jupyter notebook中的單元格?如果答案是肯定的,那麼可以掌握這個撤消删除操作的快捷方式。

如果您删除了單元格的内容,可以通過按CTRL / CMD + Z輕松恢複它。

如果需要恢複整個已删除的單元格,請按ESC + Z或EDIT>撤消删除單元格。

結論

在本文中,我列出了使用Python和Jupyter notebook時收集的一些小提示。我相信它們會對你有用,能讓你有所收獲,進而實作輕松編碼!

相關報道:

https://towardsdatascience.com/10-simple-hacks-to-speed-up-your-data-analysis-in-python-ec18c6396e6b