|
7個Python特殊技巧,助力你的數(shù)據(jù)分析工作之路如何提升數(shù)據(jù)分析能力?Peter Nistrup 根據(jù)自身經(jīng)驗列出了 7 個有用工具。 本文列舉了一些提升或加速日常數(shù)據(jù)分析工作的技巧,包括: 1. Pandas Profiling 2. 使用 Cufflinks 和 Plotly 繪制 Pandas 數(shù)據(jù) 3. IPython 魔術(shù)命令 4. Jupyter 中的格式編排 5. Jupyter 快捷鍵 6. 在 Jupyter(或 IPython)中使一個單元同時有多個輸出 7. 為 Jupyter Notebook 即時創(chuàng)建幻燈片 1. Pandas Profiling 該工具效果明顯。下圖展示了調(diào)用 df.profile_report() 這一簡單方法的結(jié)果: 使用該工具只需安裝和導(dǎo)入 Pandas Profiling 包。 本文不再詳述這一工具,如欲了解更多,請閱讀:https://towardsdatascience.com/exploring-your-data-with-just-1-line-of-python-4b35ce21a82d 2. 使用 Cufflinks 和 Plotly 繪制 Pandas 數(shù)據(jù) 「經(jīng)驗豐富的」數(shù)據(jù)科學(xué)家或數(shù)據(jù)分析師大多對 matplotlib 和 pandas 很熟悉。也就是說,你只需調(diào)用 .plot() 方法,即可快速繪制簡單的 pd.DataFrame 或 pd.Series: 有點無聊? 這已經(jīng)很好了,不過是否可以繪制一個交互式、可縮放、可擴(kuò)展的全景圖呢?是時候讓 Cufflinks* *出馬了。–ufflinks 基于 Plotly 做了進(jìn)一步的包裝。) 在環(huán)境中安裝 Cufflinks,只需在終端中運行! pip install cufflinks --upgrade 即可。查看下圖: 效果好多了! 注意,上圖唯一改變的是 Cufflinks cf.go_offline() 的導(dǎo)入和設(shè)置,它將 .plot() 方法變?yōu)?.iplot()。 其他方法如 .scatter_matrix() 也可以提供非常棒的可視化結(jié)果: 需要做大量數(shù)據(jù)可視化工作的朋友,可以閱讀 Cufflinks 和 Plotly 的文檔,發(fā)現(xiàn)更多方法。
3. IPython 魔術(shù)命令 IPython 的「魔術(shù)」是 IPython 基于 Python 標(biāo)準(zhǔn)語法的一系列提升。魔術(shù)命令包括兩種方法:行魔術(shù)命令(line magics):以 % 為前綴,在單個輸入行上運行;單元格魔術(shù)命令(cell magics):以 %% 為前綴,在多個輸入行上運行。下面列舉了 IPython 魔術(shù)命令提供的一些有用功能: %lsmagic:找出全部命令 如果你只記得一個魔術(shù)命令,那必須得是這一個。執(zhí)行 %lsmagic 命令將提供所有可用魔術(shù)命令的列表: %debug:交互式 debug 這可能是我最常使用的魔術(shù)命令了。 大部分?jǐn)?shù)據(jù)科學(xué)家都遇到過這種情況:執(zhí)行的代碼塊一直 break,你絕望地寫了 20 個 print() 語句,想輸出每個變量的內(nèi)容。然后,當(dāng)你最終修復(fù)問題后,你還得返回并再次刪除所有 print() 語句。 不過以后再也不用這樣了。遇到問題后只需執(zhí)行 %debug 命令,即可執(zhí)行想要運行的任意代碼部分: 上圖中發(fā)生了什么?
這對于更復(fù)雜的函數(shù)非常有用。 %store:在 notebook 之間傳遞變量 這個命令也很酷。假設(shè)你花了一些時間清洗 notebook 中的數(shù)據(jù),現(xiàn)在你想在另一個 notebook 中測試一些功能,那么你是在同一個 notebook 中實現(xiàn)該功能,還是保存數(shù)據(jù)并在另一個 notebook 中加載數(shù)據(jù)呢?使用%store 命令后,這些操作都不需要!該命令將存儲變量,你可以在其他任意 notebook 中檢索該變量:
%who:列出所有全局變量。 你是否遇到過,為變量賦值后卻忘記變量名的情況?或者不小心刪掉了負(fù)責(zé)為變量賦值的單元格?使用%who 命令,你可以得到所有全局變量的列表: %%time:計時魔法命令 使用該命令可以獲取所有計時信息。只需對任意可執(zhí)行代碼應(yīng)用%%time 命令,你就可以得到如下輸出: %%writefile:向文件寫入單元格內(nèi)容 在 notebook 中寫復(fù)雜函數(shù)或類,且想將其保存到專屬文件中時,該魔法命令非常有用。只需為函數(shù)或類的單元格添加 %%writefile 前綴和想要保存到的文件名即可: 如上所示,我們可以將創(chuàng)建的函數(shù)保存到 utils.py 文件中,然后就可以隨意導(dǎo)入了。在其他 notebook 中也可以這樣,只要與 utils.py 文件屬于同一個目錄即可。 4. Jupyter 中的格式編排 這個工具很酷!Jupyter 考慮到 markdown 中存在 HTML / CSS 格式。以下是我最經(jīng)常使用的功能: 藍(lán)色、時尚: <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 格式呈現(xiàn)一些發(fā)現(xiàn)時,這非常有用! 5. Jupyter 快捷鍵 想了解和學(xué)習(xí)鍵盤快捷鍵,你可以使用命令面板:Ctrl + Shift + P,獲取 notebook 所有功能的列表。下面選取了幾個最基礎(chǔ)的命令:
在命令模式內(nèi):
在編輯模式內(nèi):
選擇多個單元格:
注意,選中多個單元格后,你可以批量執(zhí)行刪除/復(fù)制/剪切/粘貼/運行操作。 6. 在 Jupyter(或 IPython)中使一個單元同時有多個輸出 想展示 pandas DataFrame 的 .head() 和 .tail(),但由于創(chuàng)建運行 .tail() 方法的額外代碼單元過于麻煩而不得不中途放棄,你是否有過這樣的經(jīng)歷?現(xiàn)在不用怕了,你可以使用以下代碼行展示你想展示的輸出: from IPython.core.interactiveshell import InteractiveShellInteractiveShell.ast_node_interactivity = "all" 下圖展現(xiàn)了多個輸出的結(jié)果: 7. 為 Jupyter Notebook 即時創(chuàng)建幻燈片 使用 RISE,你可以僅通過一次按鍵將 Jupyter Notebook 即時轉(zhuǎn)變?yōu)榛脽羝。而?notebook 仍然處于活躍狀態(tài),你可以在展示幻燈片的同時執(zhí)行實時編碼! 要想使用該工具,你只需通過 conda 或 pip 安裝 RISE 即可。 conda install -c conda-forge rise 或者 pip install RISE 現(xiàn)在,你可以點擊新按鈕,為 notebook 創(chuàng)建不錯的幻燈片了: |