一些小提示和小技巧可能是非常有用的,特别是在程式設計領域。有時候使用一點點黑客技術,既可以節省時間,還可能挽救“生命”。
一個小小的快捷方式或附加元件有時真是天賜之物,并且可以成為真正的生産力助推器。是以,這裡有一些小提示和小技巧,有些可能是新的,但我相信在下一個資料分析項目中會讓你非常友善。
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