缺失值可視化Python工具庫(kù):missingno
↑↑↑點(diǎn)擊上方藍(lán)字,回復(fù)資料,10個(gè)G的驚喜
向大家推薦一款非常實(shí)用的缺失值可視化工具庫(kù):missingno
適用場(chǎng)景
無(wú)論是打比賽還是在實(shí)際工程項(xiàng)目中,都會(huì)遇到數(shù)據(jù)缺失的情況,如果數(shù)據(jù)集較小,還能在excel或者其他可視化軟件大致看一下導(dǎo)致數(shù)據(jù)缺失的原因,那么數(shù)據(jù)集較大時(shí),想要探索其中規(guī)律,無(wú)疑難度也是越來(lái)越大。
missingno提供了一個(gè)靈活且易于使用的缺少數(shù)據(jù)可視化工具和實(shí)用程序的小型工具集,使你可以快速直觀地概述數(shù)據(jù)集的完整性。
安裝及引用
pip?install?missingno
import?missingno?as?msno
missingno一般配合numpy和pandas一起使用:
import?numpy?as?np
import?pandas?as?pd
案例中還會(huì)用到quilt,這是一個(gè)數(shù)據(jù)包管理器,可以讓你像管理代碼一樣管理數(shù)據(jù),anaconda沒(méi)有內(nèi)置,所以需要安裝一下。
導(dǎo)入數(shù)據(jù)
from?quilt.data.ResidentMario?import?missingno_data
collisions?=?missingno_data.nyc_collision_factors()
collisions?=?collisions.replace("nan",?np.nan)
##?繪制缺失值矩陣圖
msno.matrix無(wú)效矩陣是一個(gè)數(shù)據(jù)密集的顯示,它可以快速直觀地看出數(shù)據(jù)完整度。??
msno.matrix(collisions.sample(250))
空白越多說(shuō)明缺失越嚴(yán)重
右側(cè)的迷你圖概述了數(shù)據(jù)完整性的一般形狀,并指出了數(shù)據(jù)集中具有最大和最小無(wú)效值的行數(shù)。需要說(shuō)明的是,這個(gè)矩陣圖最多容納50個(gè)變量,超過(guò)此范圍的標(biāo)簽開始重疊或變得不可讀,默認(rèn)情況下,大尺寸顯示器會(huì)忽略它們。
如果要處理時(shí)間序列數(shù)據(jù),則可以使用關(guān)鍵字參數(shù)指定周期性freq:
null_pattern?=?(np.random.random(1000).reshape((50,?20))?>?0.5).astype(bool)??
null_pattern?=?pd.DataFrame(null_pattern).replace({False:?None})??
msno.matrix(null_pattern.set_index(pd.period_range('1/1/2011',?'2/1/2015',?freq='M'))?,?freq='BQ')

繪制缺失值條形圖
條形圖提供與矩陣圖相同的信息,但格式更簡(jiǎn)單。msno.bar(collisions.sample(1000))
繪制缺失值熱力圖
missingno相關(guān)性熱力圖可以顯示無(wú)效的相關(guān)性:一個(gè)變量的存在或不存在如何強(qiáng)烈影響的另一個(gè)的存在。
數(shù)值為1:兩個(gè)變量一個(gè)缺失另一個(gè)必缺失;
數(shù)值為-1:一個(gè)變量缺失另一個(gè)變量必然不缺失。
數(shù)值為0:變量缺失值出現(xiàn)或不出現(xiàn)彼此沒(méi)有影響。
熱力圖非常適合于選擇變量對(duì)之間的數(shù)據(jù)完整性關(guān)系,但是當(dāng)涉及到較大的關(guān)系時(shí),其解釋力有限,并且它不特別支持超大型數(shù)據(jù)集。
注:始終為滿或始終為空的變量沒(méi)有任何有意義的關(guān)聯(lián),因此會(huì)從可視化中刪除。
msno.heatmap(collisions)
缺失值樹狀圖
通過(guò)樹狀圖,可以更全面地觀察缺失變量的關(guān)聯(lián)性,揭示比關(guān)聯(lián)熱力圖更深刻的相關(guān)關(guān)系:
msno.dendrogram(collisions)
樹狀圖使用層次聚類算法通過(guò)變量的無(wú)效相關(guān)性(以二進(jìn)制距離來(lái)衡量)將變量彼此分類。在樹的每個(gè)步驟中,根據(jù)哪個(gè)組合最小化其余群集的距離來(lái)對(duì)變量進(jìn)行拆分。變量集越單調(diào),它們的總距離越接近零,而它們的平均距離(y軸)越接近零。以零距離鏈接在一起的簇葉完全可以預(yù)測(cè)彼此的存在-一個(gè)變量在填充另一個(gè)變量時(shí)可能始終為空,或者它們可能始終都被填充或都為空,依此類推。
簇葉幾乎分裂為零,但不分裂為零,彼此預(yù)測(cè)得很好,但仍不完美。如果你自己的數(shù)據(jù)集的解釋是,這些列實(shí)際上是或者應(yīng)該是在無(wú)效相互匹配(例如,作為CONTRIBUTING FACTOR VEHICLE 2和VEHICLE TYPE CODE 2應(yīng)該),那么集群葉的高度告訴你,在絕對(duì)數(shù)量,記錄多久是“不匹配”或提交錯(cuò)誤的文件,也就是說(shuō),如果您愿意,則必須填寫或刪除多少個(gè)值。
機(jī)器學(xué)習(xí)從 入 門 到 精 通 路 線 圖
阿里云Python訓(xùn)練營(yíng)總結(jié):聊聊堅(jiān)持的意義




