獨家 | 用pandas-profiling做出更好的探索性數據分析(附代碼)

作者:Thomas Gey

翻譯:廖倩穎

校對:和中華

本文約2300字,建議閱讀5分鐘。

探索性數據分析已失勢,Pandas-profiling萬歲!用更省力的辦法完美呈現你的數據。

標籤:機器學習 Pandas-profiling

 

一個充滿壞數據的世界

在大部分數據科學領域中,我們獲得的數據並不如網上專門爲機器學習模型的應用而設計和準備的數據乾淨和完整。大部分情況下,外部來源的數據不是結構性差就是不完整,這時候就需要你來把這些數據變得更可用!

 

雖然數據科學家注意到了數據質量的重要性,但這對於商業領導者來說並不是個事。他們更關注如何儘早使用技術來維持競爭優勢,而很少理解技術的實際應用。這意味着人們會在“量大出奇蹟”的藉口下,利用數據集裏的一切信息並希望獲得最好的結果。

 

由於思維方式的差異,在建模前一個數據科學家一般花費80%時間準備數據集。

爲什麼是80%時間?因爲有缺失值,不平衡的數據,沒有任何意義的字段,刪除重複數據後的數據,過時數據和其他原因。人們最近才意識到數據的重要性。但是,即使趨勢逆轉,數據也很難輕易訪問和結構良好。

 

一個壞數據集的後果很簡單也很符合邏輯:用這些數據集建立的預測模型將會有低準確率和低效率。用不正確的數據訓練模型會產生偏差,你的結果將與現實相去甚遠。一個糟糕的模型無法被部署,所以對於公司來說開發這樣的模型是淨損失。

 

一個用鏽鐵製造的汽車不能正常駕駛,甚至在最糟糕的情況下,根本不能駕駛…沒有人願意使用或購買一輛生鏽的汽車。

 

所以,數據集對於你的項目至關重要。項目在技術和經濟層面上的成功取決於你所選擇數據的質量。在機器學習項目中,跳過數據評估步驟可能會浪費大量時間,你將不得不從頭開始項目。所以現在看來,數據科學家們花那麼多時間調查和準備數據集是合乎邏輯的!

 

低質量數據只會導致低質量結果

神創造了探索性數據分析

概念性的方法

爲了確保我們的數據集是有用的,一個好的實踐操作是EDA,即探索性數據分析

EDA是一種熟悉數據集的方法。通過這個反思性工作,可以保證處理的是有趣,連貫和乾淨的數據。這一步是可視化的而且是基於摘要統計和圖形表達。

 

通過EDA,數據科學家可以發現哪一個特徵重要或者特徵之間的相關性。此外,EDA可以讓你發現錯誤或者缺失值,檢測異常值或者駁回一個假設。特徵變量的選擇之後會被用於機器學習。

 

一般來說,在探索性數據分析之後的步驟是特徵工程/數據增強,在這一過程中,你需要把原始數據進行處理,賦予他們額外價值。

 

一個EDA基本例子:

對於這個例子,我使用了一個非常適合EDA的數據集,即FIFA 19完整的球員數據集。它包含多種數據類型,缺失值,並且有許多適用的指標。對這個數據集的幾個完整的分析可以在這裏找到。我使用JupyterLab作爲IDE,因爲它的靈活性和用戶友好的界面。

讓我們使用pandas庫從CSV文件中導入數據:

import pandas as pd
%time data = pd.read_csv("fifa.csv", delimiter=',', index_col=0)

加載速度很快。現在介紹一下data.sample(5),這是一個隨機選擇行的方法。如果不知道數據是如何排序的,最好使用.sample()而不是.head()。

 

data.sample(5)

 

讓我們用.describe()來做一些描述性統計。該方法“總結了數據集分佈的集中趨勢、分散和形狀,不包括NaN值”。

data.describe()

 

現在我們有了描述性統計數據,我們將會檢查缺失數據。我們將會僅僅按順序列出10個有超10%缺失值的特徵:

total = data.isnull().sum().sort_values(ascending=False) 
 percent = (data.isnull().sum()/data.isnull().count()).sort_values(ascending=False) 
 missing_data = pd.concat([total, percent], axis=1, keys=['Total', 'Missing Percent']) 
 missing_data['Missing Percent'] = missing_data['Missing Percent'].apply(lambda x: x * 100) 
 missing_data.loc[missing_data['Missing Percent'] > 10][:10]

 

正如你看到的,對於數據科學家來說在notebook上做探索性數據分析是非常方便和高效的。但是,視覺效果仍然很有總結性。讓我們一起看看如何用pandas-profiling來更省力地動態展現數據。

 

只有通過觀察,我們才能學習。

Pandas-profiling,我們的救世主!

概念

Github描述:”從pandas Dataframe生成概況報告(profile)“

Pandas-profiling將所有東西打包形成一個完整的EDA:最常見值、缺失值、相關性、分位數和描述性統計、數據長度等等。有了這些指標,您將很快看到數據的分佈和差異。這些信息至關重要,幫你判斷數據將來是否有用。

 

度量指標在互動性HTML報告中呈現。

pandas-profiling在HTML報告中以結構化的方式展現了不同指標。得益於它的交互性,我們能夠很容易地從一個特徵轉換到另外一個並且訪問其指標。

gif圖片可以打開一下地址查看:

https://miro.medium.com/max/1400/1*48uRp4eMwtQgb4raZRRAtA.gif

 

一起來看看如何用它:

pip install pandas-profiling

使用我們的FIFA數據集:

import pandas as pd
import pandas_profiling
data_fifa = pd.read_csv('fifa.csv')
profile = data_fifa.profile_report(title='Pandas Profiling Report')
profile.to_file(output_file="fifa_pandas_profiling.html")

在以上的代碼中,我們僅僅導入了pandas和pandas-profiling,讀取我們的CSV文件並調用profile_report()方法,因爲pandas_profiling使用data_fifa.profile_report()來擴展pandas DataFrame。然後,使用.to_file()將ProfileReport對象導出爲HTML文件。

大功告成!至此,我們的HTML文件位於該文件夾的根目錄:

 

上圖展現了報告的“概述”部分。這部分簡略描述了變量的類型,缺失值或者是數據集的大小。

 

Pandas-profiling使用matplotlib作爲圖形庫和jinja2作爲其接口的模板引擎。

 

作爲一個自由職業者,當我必須爲客戶處理一個新的數據集時,我總是先生成一個pandas profiling,它幫助我吸收數據集的信息。這種做法允許我量化數據集的處理時間。多少特徵看起來是正確的?多少包含缺失值?缺失值的百分比是多少?哪些變量互相依賴?

 

另外,此外,該報告還可以作爲展示界面,向客戶介紹數據健康度的全局情況。無需在你的Jupyter notebook上展示你的分析,當中還夾雜着代碼和圖表,該報告按照特徵整合了各種度量指標,並且有更友好的界面。我的客戶喜歡對委派給我的任務有一個完整的跟蹤,也希望定期瞭解我的進展。通常我使用該報告提供數據的健康狀態。這一步之後是更深入的數據分析和可視化。

 

結論

大數據的潛力還在不斷增長。充分利用這一優勢意味着公司必須把分析和預測系統併入戰略視野中,並且用此來做出更好更快的決策。通常來說我們拿到的數據含有錯誤和缺失值。爲了使工作變得有效率,這些數據必須被分析和處理。這就是數據科學家要做的工作。數據科學家用pandas-profiling可以更省力地產出快速的探索性數據分析報告。這份報告清晰且容易使用, 還可以被任何有點統計基礎的人看懂。

 

有了對數據的全局理解,您就會有一些思路去進一步分析、處理數據或尋找外部數據源以提高數據質量。

我希望您喜歡這個關於pandas-profiling的小介紹!這是我在medium上寫的第一篇文章,歡迎評論和改進建議!

原文標題:

A better EDA with Pandas-profiling

原文鏈接:

https://towardsdatascience.com/a-better-eda-with-pandas-profiling-e842a00e1136

編輯:於騰凱

校對:林亦霖

譯者簡介

廖倩穎,馬里蘭大學公園分校市場分析專業碩士畢業,本科畢業於上海海洋大學包裝工程專業。喜歡音樂、電影和看書,我對於數據科學和數據可視化比較有興趣,最近在學習CV和機器學習算法基礎,希望能與各位大佬交流切磋長姿勢。

翻譯組招募信息

工作內容:需要一顆細緻的心,將選取好的外文文章翻譯成流暢的中文。如果你是數據科學/統計學/計算機類的留學生,或在海外從事相關工作,或對自己外語水平有信心的朋友歡迎加入翻譯小組。

你能得到:定期的翻譯培訓提高志願者的翻譯水平,提高對於數據科學前沿的認知,海外的朋友可以和國內技術應用發展保持聯繫,THU數據派產學研的背景爲志願者帶來好的發展機遇。

其他福利:來自於名企的數據科學工作者,北大清華以及海外等名校學生他們都將成爲你在翻譯小組的夥伴。

點擊文末“閱讀原文”加入數據派團隊~

轉載須知

如需轉載,請在開篇顯著位置註明作者和出處(轉自:數據派ID:DatapiTHU),並在文章結尾放置數據派醒目二維碼。有原創標識文章,請發送【文章名稱-待授權公衆號名稱及ID】至聯繫郵箱,申請白名單授權並按要求編輯。

發佈後請將鏈接反饋至聯繫郵箱(見下方)。未經許可的轉載以及改編者,我們將依法追究其法律責任。

點擊“閱讀原文”擁抱組織

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