7件事,讓你快速提高數據分析能力
想讓自己的數據分析能力更上一層樓嗎?本文可以幫助你形成一個“每日加速提升數據分析能力清單”。
#1: Pandas Profiling
這一工具的優點顯而易見。以下動畫是使用df.profile_report()這一簡單方法的結果。請自行觀看成果展示;

使用此工具只需安裝和導入Pandas Profiling程序包即可。
#2: 使用Cufflinks和Plotly繪制Panda數據
大多所謂的“經驗豐富的”數據科學家或數據分析師都對matplotlib和 pandas的協同非常熟悉。也就是說,他們可以通過使用.plot()函數快速繪制pd.DataFrame或pd.Series圖像。

有點無聊是吧?
現在就好了。如何做一個交互型全景式可縮放的圖像呢?Cufflinks 可以做到!(由 Plotly提供)
在系統中安裝Cufflinks即可! 快速安裝Cufflinks ——在自己最喜歡的終端進行更新即可。可以觀看以下動畫:

好多了!
注意,唯一會改變以上結果的是對Cufflinks輸入并設置cf.go_offline() 函數。其余的只是把.plot()改成.iplot()。
其他像.scatter_matrix()這樣的函數會帶來不錯的可視化圖像:

酷斃了!
希望從事大量數據可視化工作的朋友都看一看有關的Cufflinks和Plotly內容,從中可以找到大量方法!
#3: IPython Magic Commands
IPython 的Magics本質上就是IPython堆疊在Python語法頂端的一系列加強功能。Magic commands有兩種:其一為line magics,用%作為前綴表示,在一行輸入的代碼上運行;而 cell magics用%%作為前綴表示,在多行輸入的代碼上運行。以下是Magics的一些實用函數:
%lsmagic: 應有盡有。
不妨先嘗試一些傳統卻好用的方法。如果只記得一條Magic Command,估計就是它了。執行%lsmagic將會出現所有可用的Magic Commands列表:

%debug: 交互程序調試
這估計是Magic Command使用頻次最高的了。
大多人都試過:程序員執行一個代碼塊,而這個代碼塊一直出錯。絕望中的程序員為了輸出每一變量的內容,寫下20 print()一類代碼。然后當程序員終于修復了問題時,就不得不回過頭刪除所有列出的函數。
然而現在不用了!只需在遇到問題的時候執行%debug,就可以執行任意一部分代碼了:

那么,總結一下以上內容:
1. 有一個函數,它將一個列表作為輸入,并平方所有偶數。
2. 運行函數,某處出現錯誤。但無法找到錯誤。
3. 出錯時把%debug命令標記到函數中。
4. 讓調試程序顯示x以及type(x)的值。
5. 由此找到了錯誤:6被當作了一行字符串!
可以想象,這一命令對更多更復雜的函數都大有用處!
%store: 在notebooks間互傳變量
這個命令也很棒。首先說一說起因。程序員花時間清理了notebook中的一些數據,現在要測試另一notebook中的一些函數,因此既需要在同一notebook中實現函數功能,又要將其放到另一notebook中。用%store只要存儲變量,并在任一notebook中檢索即可:

%store [variable]存儲變量。
%store -r [variable]閱讀/檢索已存儲的變量。
%who: 羅列所有變量。
是否曾將某個值賦到一個變量上但忘了變量名稱?是否不小心刪除了賦值給變量的單元格?有了%who,就可以獲得所有已賦值的變量:

%%time: 魔法定時。
有了這個命令,就可以獲得一切所需的定時信息。只要將%%time應用到任何一段可執行的代碼中,就可以獲得如下輸出:

24微秒。馬馬虎虎吧。
%%writefile: 將單元格內容編輯到文檔。
這是本文的最后一個命令。當已經在notebook中寫了一些復雜的函數或其類別,而想要將其從notebook中分離存到文件中去時,這個命令非常有用。只需為函數或其類別添加前置%%writefile,然后添加文件名儲存即可:

如圖所示,可以直接將創建的函數儲存到 “utils.py” 文件夾中,以任意形式導入函數即可。在其他notebook中也是這樣!(只要都在utils.py文件夾的同一個目錄中)
#4: Jupyter中的絢麗格式
這個非常棒!基本上,Jupyter允許在markdown單元格中設置一些HTML / CSS格式。這是一些常用的:
憂郁而時髦的:
- <div class="alert alert-block alert-info">
- This is <b>fancy</b>!
- </div>
熱血而稍顯痛苦的:
- <div class="alert alert-block alert-danger">
- This is <b>baaaaad</b>!
- </div>
青澀而平靜的:
- <div class="alert alert-block alert-success">
- This is <b>gooood</b>!
- </div>
此處為操作動畫:

當要以notebook形式展示成果時,這些命令非常有用!
#5: Jupyter的快捷鍵
學習了鍵盤快捷鍵后,可以使用命令面板:Ctrl + Shift + P。這一操作可以直接喚起notebook中的函數列表。以下為部分基礎命令:
Esc: 使用這一快捷鍵可直接切換到命令模式。這也是用方向鍵在notebook中導航的方式。
處于命令模式時:
• A和B:鍵入新單元格,上移([A]bove)或下移([B]elow)現有單元格。
• M: 將現有單元格markdown( [M]arkdown)。
• Y: 將現有單元格改為代碼。
• D,D:確認刪除 ([D]efinetly [D]eletes)現有單元格。
Enter: 對現有單元格進行返回編輯模式的操作。
處于編輯模式時:
• Shift + Tab:給鍵入現有單元格的目標顯示Docstring (文檔字符串) —— 長按快捷鍵切換文檔模式。
• Ctrl + Shift + -:將現有單元格從光標停留處分離。
• Esc + F:查找替換不含輸出的代碼。
• Esc + O:切換單元格輸出。
選擇多個單元格:
• Shift + Down和Shift + Up: 向下或向上選擇下一個單元格。個人認為可以使用演繹法進行判別。
• Shift + M: 合并選中的單元格。
• 請注意,一旦單元格被選中,則可以批量刪除/復制/粘貼/運行。
#6: Jupyter (或IPython)每一單元格的多種輸出
這個也不錯。是否曾經想顯示pandas數據幀(DataFrame)的the .head()和 the .tail()?但是卻半途而廢,因為要創建一個額外的代碼單元格去運行.tail() ,這太麻煩了。別再害怕了,現在使用下列代碼可以顯示所有想要的輸出:
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
看,多個輸出的實力在此:

小菜一碟
#7:不斷擴充自己的Jupyter notebook
使用 RISE,就可以將Jupyter Notebook陸續轉化為幻燈片形式。最棒的是,notebook仍是可用的,所以可以實現文稿演示的同時實時編碼!
根據個人系統環境,通過conda或者pip都可以安裝 RISE以使用該工具:
conda install -c conda-forge rise
/// OR ///
pip install RISE
現在就可以點擊新按鈕從notebook中創建演示文稿了:
