本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理
本文章來著騰訊云 作者:python學習教程
本文列舉了一些提升或加速日常資料分析作業的技巧,包括:
-
Pandas Profiling
-
使用 Cufflinks 和 Plotly 繪制 Pandas 資料
-
IPython 魔術命令
-
Jupyter 中的格式編排
-
Jupyter 快捷鍵
-
在 Jupyter(或 IPython)中使一個單元同時有多個輸出
-
為 Jupyter Notebook 即時創建幻燈片
1. Pandas Profiling
該工具效果明顯,下圖展示了呼叫 df.profile_report() 這一簡單方法的結果:

使用該工具只需安裝和匯入 Pandas Profiling 包,
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() 也可以提供非常棒的可視化結果:

3. IPython 魔術命令
IPython 的「魔術」是 IPython 基于 Python 標準語法的一系列提升,魔術命令包括兩種方法:行魔術命令(line magics):以 % 為前綴,在單個輸入行上運行;單元格魔術命令(cell magics):以 %% 為前綴,在多個輸入行上運行,下面列舉了 IPython 魔術命令提供的一些有用功能:
%lsmagic:找出全部命令
如果你只記得一個魔術命令,那必須得是這一個,執行 %lsmagic 命令將提供所有可用魔術命令的串列:
%debug:互動式 debug
這可能是我最常使用的魔術命令了,
大部分資料科學家都遇到過這種情況:執行的代碼塊一直 break,你絕望地寫了 20 個 print() 陳述句,想輸出每個變數的內容,然后,當你最終修復問題后,你還得回傳并再次洗掉所有 print() 陳述句,
不過以后再也不用這樣了,遇到問題后只需執行 %debug 命令,即可執行想要運行的任意代碼部分:
上圖中發生了什么?
- 我們有一個函式,它以串列為輸入,并對所有的偶數取平方值,
- 我們運行函式,但是出了些問題,但是我們并不知道怎么回事!
- 對該函式使用%debug 命令,
- 讓除錯器告訴我們 x 和 type(x) 的值,
- 問題顯而易見:我們把’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 InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
下圖展現了多個輸出的結果:

7. 為 Jupyter Notebook 即時創建幻燈片
使用 RISE,你可以僅通過一次按鍵將 Jupyter Notebook 即時轉變為幻燈片,而且 notebook 仍然處于活躍狀態,你可以在展示幻燈片的同時執行實時編碼!
要想使用該工具,你只需通過 conda 或 pip 安裝 RISE 即可,
conda install -c conda-forge rise
或者
pip install RISE
現在,你可以點擊新按鈕,為 notebook 創建不錯的幻燈片了:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/237434.html
標籤:Python
