7大 Python 特殊技巧提升數據分析能力

點擊上方Python知識圈,選擇設爲星標

回覆1024獲取Python資料

選自TowardsDataScience

作者:Perter Nistrup
機器之心編譯
參與:魔王

閱讀文本大概需要 5 分鐘。

pk哥寄語:不要小瞧一些小技巧,有些能會讓你相見恨晚,後悔自己沒有早點了解這個技巧,反正我是喫虧過。你有哪些恨不得早點了解的技巧,歡迎在留言區分享出來。

本文是 Peter Nistrup 根據自己的日常數據分析工作的經驗,總結出 7 個提升數據分析效率的技巧。

1. Pandas Profiling


該工具效果明顯。下圖展示了調用 df.profile_report() 這一簡單方法的結果:

使用該工具只需安裝和導入 Pandas Profiling 包。
本文不再詳述這一工具,如欲瞭解更多,請閱讀:https://towardsdatascience.com/exploring-your-data-with-just-1-line-of-python-4b35ce21a82d

2. 使用Cufflinks和Plotly繪製Pandas數據

「經驗豐富的」數據科學家或數據分析師大多對 matplotlib 和 pandas 很熟悉。也就是說,你只需調用 .plot() 方法,即可快速繪製簡單的 pd.DataFrame 或 pd.Series:

有點無聊?

這已經很好了,不過是否可以繪製一個交互式、可縮放、可擴展的全景圖呢?是時候讓 Cufflinks* *出馬了!(Cufflinks 基於 Plotly 做了進一步的包裝。
在環境中安裝 Cufflinks,只需在終端中運行! pip install cufflinks --upgrade 即可。查看下圖:
效果好多了!
注意,上圖唯一改變的是 Cufflinks cf.go_offline() 的導入和設置,它將 .plot() 方法變爲 .iplot()。
其他方法如 .scatter_matrix() 也可以提供非常棒的可視化結果:


需要做大量數據可視化工作的朋友,可以閱讀 Cufflinks 和 Plotly 的文檔,發現更多方法。

  • Cufflinks 文檔:https://plot.ly/ipython-notebooks/cufflinks/

  • Plotly 文檔:https://plot.ly/

3. IPython 魔術命令

IPython 的「魔術」是 IPython 基於 Python 標準語法的一系列提升。魔術命令包括兩種方法:行魔術命令(line magics):以 % 爲前綴,在單個輸入行上運行;單元格魔術命令(cell magics):以 %% 爲前綴,在多個輸入行上運行。下面列舉了 IPython 魔術命令提供的一些有用功能:
%lsmagic:找出全部命令
如果你只記得一個魔術命令,那必須得是這一個。執行 %lsmagic 命令將提供所有可用魔術命令的列表:

%debug:交互式 debug
這可能是我最常使用的魔術命令了。
大部分數據科學家都遇到過這種情況:執行的代碼塊一直 break,你絕望地寫了 20 個 print() 語句,想輸出每個變量的內容。然後,當你最終修復問題後,你還得返回並再次刪除所有 print() 語句。
不過以後再也不用這樣了。遇到問題後只需執行 %debug 命令,即可執行想要運行的任意代碼部分:

上圖中發生了什麼?
  1. 我們有一個函數,它以列表爲輸入,並對所有的偶數取平方值。

  2. 我們運行函數,但是出了些問題。但是我們並不知道怎麼回事!

  3. 對該函數使用%debug 命令。

  4. 讓調試器告訴我們 x 和 type(x) 的值。

  5. 問題顯而易見:我們把'6'作爲字符串輸入到函數中了!

這對於更復雜的函數非常有用。
%store:在 notebook 之間傳遞變量
這個命令也很酷。假設你花了一些時間清洗 notebook 中的數據,現在你想在另一個 notebook 中測試一些功能,那麼你是在同一個 notebook 中實現該功能,還是保存數據並在另一個 notebook 中加載數據呢?使用%store 命令後,這些操作都不需要!該命令將存儲變量,你可以在其他任意 notebook 中檢索該變量:

  • %store [variable] 存儲變量。

  • %store -r [variable] 讀取/檢索存儲變量。

%who:列出所有全局變量。
你是否遇到過,爲變量賦值後卻忘記變量名的情況?或者不小心刪掉了負責爲變量賦值的單元格?使用%who 命令,你可以得到所有全局變量的列表:


%%time:計時魔法命令
使用該命令可以獲取所有計時信息。只需對任意可執行代碼應用%%time 命令,你就可以得到如下輸出:

%%writefile:向文件寫入單元格內容
在 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:在當前單元格上方(Above)或下方(Below)插入新的單元格。

  • M:當前單元格轉入 Markdown 狀態。

  • Y:當前單元格轉入 code 狀態。

  • D,D:刪除當前單元格。

  • Enter:當前單元格回到編輯模式。

編輯模式內:
  • Shift + Tab:爲你在當前單元格中鍵入的對象提供文檔字符串(文檔),持續使用該快捷鍵,可循環使用文檔模式。

  • Ctrl + Shift + -:在光標所在處分割當前單元格。

  • Esc + F:查找並替換代碼(不包括輸出)。

  • Esc + O:切換單元格輸出。

選擇多個單元格
  • Shift + Down 和 Shift + Up:選中下方或上方的單元格。

  • Shift + M:合併選中單元格。

注意,選中多個單元格後,你可以批量執行刪除/複製/剪切/粘貼/運行操作。

6. 在 Jupyter(或 IPython)中使一個單元同時有多個輸出

想展示 pandas DataFrame 的 .head() 和 .tail(),但由於創建運行 .tail() 方法的額外代碼單元過於麻煩而不得不中途放棄,你是否有過這樣的經歷?現在不用怕了,你可以使用以下代碼行展示你想展示的輸出:
from IPython.core.interactiveshell import InteractiveShellInteractiveShell.ast_node_interactivity = "all"

下圖展現了多個輸出的結果:

7. 爲 Jupyter Notebook 即時創建幻燈片

使用 RISE,你可以僅通過一次按鍵將 Jupyter Notebook 即時轉變爲幻燈片。而且 notebook 仍然處於活躍狀態,你可以在展示幻燈片的同時執行實時編碼!

要想使用該工具,你只需通過 conda 或 pip 安裝 RISE 即可。
conda install -c conda-forge rise

或者
pip install RISE
現在,你可以點擊新按鈕,爲 notebook 創建不錯的幻燈片了:


留言打卡 DAY 42

今日的留言話題是:你有哪些相見恨晚的Python小技巧?或者,後悔沒早點掌握的小技巧或者知識點?關於留言打卡的規則可以參考 留言打卡送福利 (點擊鏈接查看詳細打卡規則),請按照 暱稱+天數(請以自己實際打卡的天數爲準,如day1 or day2 or day3)+ 留言內容(不少於15字)的方式留言。

Python知識圈公衆號的交流羣已經建立,羣裏可以領取 Python 和人工智能學習資料,大學可以一起學習交流,效率更高,如果是想發推文、廣告、砍價小程序的敬請繞道一定記得備註「交流學習」,我會盡快通過好友申請哦!通過好友後私聊我「學習資料」或者「進羣」都可以。

掃碼添加,備註:交流學習

往期推薦
01

你相信逛B站也能學編程嗎?Python爬蟲B站視頻

02

用Python每天自動給女朋友免費發短信

03

入門 | 32個常用 Python 實現


分享給你的朋友

點個在看

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章