加速數據分析,這10個小技巧好用到哭
劃重點!!!本文列舉了一些使用Python和Jupyter Notebook的技巧,討論了如何輕松分析數據以及如何進行格式化編碼、輸出和調試等操作。
在編程領域,有時一個小技巧就能節省大量時間,甚至能起到救命的效果。這些“必殺技”往往能在未來的數據分析中發揮重大作用。
1. 分析Pandas數據框架
Profiling(分析)是一個幫助理解數據的過程,Pandas Profiling(數據預覽分析)作為一個python工具包,就是用來幫助理解數據的。該工具能夠簡單快速地對熊貓數據框架進行探索性數據分析。pandas df.describe()和df.info()functions通常是EDA過程的第一步。然而,這個步驟只提供一個基本的數據預覽,對大型數據集幫助不大。另外,Pandas Profiling功能使用df.profile_report()擴展了熊貓數據框架,可以快速進行數據分析。該功能僅用一行代碼就可以顯示很多信息,這也可以應用在交互式的HTML報告中。
對于給定數據集,數據預覽分析包會處理以下數據:

Pandas Profiling工具包計算的統計數據
安裝
- pip install pandas-profiling
- or
- conda install -c anaconda pandas-profiling
使用
用古老的大數據集來演示python profiler的功能。
- #importing the necessary packages
- import pandas as pd
- import pandas_profiling
- # Depreciated: pre 2.0.0 version
- df = pd.read_csv('titanic/train.csv')
- pandas_profiling.ProfileReport(df)
最近,Pandas-Profiling發布了一個重要的2.0.0升級版本。事實上,該版本對語法作了一點改變,這個功能也已經包含在熊貓數據框架中了,報告也變得更加全面。以下是最新的語法用法:
使用
要在Jupyter筆記本中顯示報告,并運行:
- #Pandas-Profiling 2.0.0
- df.profile_report()
這一行代碼就是用戶在Jupyter筆記本中顯示數據分析報告所需的全部內容。顯示的報告非常詳細,必要時還包括圖表。

通過下列代碼用戶還可以將該報告導出到交互式HTML文件中:
- profile = df.profile_report(title='Pandas Profiling Report')
- profile.to_file(outputfile="Titanic data profiling.html")

更多詳細信息和示例:https://pandas-profiling.github.io/pandas-profiling/docs/
2. 增強Pandas plots的互動性
Pandas有一個內置的 .plot() 功能,是數據框架類的一部分。然而,該功能不盡人意的地方在于呈現的可視化不是交互式的。相反,用pandas.DataFrame.plot()功能繪制圖表就很容易。如果不對代碼做重大修改,可以繪制出像熊貓圖表一樣的交互式圖表嗎?答案是可以的,Cufflinks庫能夠幫助做到這一點。
Cufflinks庫將plotly的功能與Pandas的靈活性結合起來,使繪圖簡單化。現在就來看看如何安裝這個庫,并讓它在pandas上運行。
安裝
- 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() 與 df.plot()
右邊的可視化顯示的是靜態圖表,而左邊則是交互式圖表,更為詳細。這些圖表在語法上都沒有作出重大改變。
更多示例:https://github.com/santosjorge/cufflinks/blob/master/Cufflinks%20Tutorial%20-%20Pandas%20Like.ipynb
3. 少許魔法
魔法命令(Magic commands)是Jupyter筆記本中的一組便捷功能,旨在解決標準數據分析中的一些常見問題。在 %lsmagic的幫助下,用戶可以看到所有可用的魔法功能。

所有可用魔法功能的清單
魔法命令有兩種:行魔法,即以單個%字符為前綴,在單行輸入上操作;單元格魔法,即以%%為前綴,在多行輸入上操作。如果設置為1,則無需鍵入初始%即可調用魔術功能。
一起來看看兩種魔法命令在常見數據分析任務中的應用:
- % pastebin
%pastebin將代碼上傳到Pastebin并返回url地址。Pastebin屬于在線內容托管服務,在這里,用戶可以存儲如源代碼片段等純文本,然后與他人共享網址。事實上,Github的要點也類似于pastebin,盡管存在版權限制。
考慮一個包含以下內容的python腳本file.py:
- #file.py
- def foo(x):
- return x
在Jupyter筆記本中使用 %pastebin會生成一個pastebin網址。

- %matplotlib notebook
%matplotlib inline功能用于渲染Jupyter筆記本中的靜態matplotlib圖。嘗試用notebook替換inline,以輕松獲得可變焦、可調整大小的繪圖。請確保在導入matplotlib庫之前啟用該功能。

%matplotlib inline 與 %matplotlib notebook
- %run
%run 功能在筆記本內部運行python腳本。
- %run file.py
- %%writefile
%%writefile 將單元格的內容寫入文件。通過該功能,代碼將被寫入一個名為foo.py的文件,并保存在當前目錄中。

- %%latex
%%latex 功能將單元格內容呈現為 LaTeX格式。這對于在單元格中編寫數學公式和方程很有用。

4. 查找并消除錯誤
Interactive debugger也是一個有魔力的功能,但本文對它進行單獨分類。如果在運行代碼單元時出現異常,用戶可以在新的一行中鍵入 %debug 并恢復運行。這一操作將打開一個交互式調試環境,找到發生異常的位置。用戶還可以檢查程序中分配的變量值,并在此執行操作。點擊q即可退出調試。

5. 美觀排版
如果想建立美觀的數據結構,pprint是一個直接的模塊,在打印字典或JSON數據時特別有用。下面來看一個使用print 和 pprint 來顯示輸出的例子。

6. 筆記突出顯示
可以在Jupyter筆記本中使用alert/Note boxes來標記一些重要的或需要突出的內容。筆記的顏色取決于突出內容的重要程度。用戶只需在需要突出顯示的單元格中添加以下任意或所有代碼。
- 藍色筆記框:信息
- <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-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>

7. 打印單元格的所有輸出
例如包含以下代碼行的Jupyter筆記本單元格:
- In [1]: 10+5
- 11+6
- Out [1]: 17
只打印最后一個輸出是單元格的正常屬性,而其他輸出,則需要添加 print()功能。事實證明,只要在筆記本頂部添加以下代碼段,就可以打印所有的輸出內容。
- 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()
該方式可幫助用戶找到異常發生的位置,然后可以處理代碼。

漏洞的原始來源
9. 自動注釋代碼
Ctrl/Cmd + / 可以自動注釋掉單元格中選定的行。再次點擊該組合鍵可以取消同一行代碼的注釋。

10. 撤銷刪除操作
你曾經有不小心刪除過筆記本中的單元格嗎?如果有,那么這里有一個快捷鍵可以撤銷刪除操作。
- 如果刪除了單元格的內容,可以通過點擊CTRL/CMD+Z來輕松恢復它
- 如果需要恢復整個刪除的單元格,可以點擊ESC+Z或者 EDIT > Undo Delete Cells
