Python可视化查看数据集完整性: missingno库(用于数据分析前的数据检查)

数据分析之前首先要保证数据集的质量,missingno库提供了一个灵活易用的可视化工具来观察数据缺失情况,是基于matplotlib的,接受pandas数据源

快速开始

样例数据使用 NYPD Motor Vehicle Collisions Dataset 数据集. 运行下面命令获得数据

pip install quilt
quilt install ResidentMario/missingno_data

加载数据到内存

from quilt.data.ResidentMario import missingno_data
collisions = missingno_data.nyc_collision_factors()
collisions = collisions.replace("nan", np.nan)

image

有几个主要函数来不同方式的可视化展示数据集数据缺失情况

Matrix

Matrix是使用最多的函数,能快速直观地看到数据集的完整性情况,矩阵显示

import missingno as msno
%matplotlib inline
msno.matrix(collisions.sample(250))

image右边的迷你图总结了数据集的总的完整性分布,并标出了完整性最大和最小的点

最多支持50列

可以通过figsize指定图像大小,例如这样msno.matrix(collisions.sample(250),figsize=(12,5))

如果数据是时序的,那可以用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')

image

Bar Chart

msno.bar可以简单的展示无效数据的条形图

msno.bar(collisions.sample(1000))

image

Heatmap

热图

image两个变量的无效相关范围从-1(如果一个变量出现,另一个肯定没有)到0(出现或不出现的变量对彼此没有影响)到1(如果一个变量出现,另一个肯定也是)

数据全缺失或全空对相关性是没有意义的,所以就在图中就没有了,比如date列就没有出现在图中

大于-1和小于1表示有强烈的正相关和负相关,但是由于极少数的脏数据所以并不绝对,这些例外的少数情况需要在数据加工时候予以注意

热图方便观察两个变量间的相关性,但是当数据集变大,这种结论的解释性会变差

Dendrogram

树状图

image

树状图采用由scipy提供的层次聚类算法通过它们之间的无效相关性(根据二进制距离测量)将变量彼此相加。在树的每个步骤中,基于哪个组合最小化剩余簇的距离来分割变量。变量集越单调,它们的总距离越接近0,并且它们的平均距离越接近零

在0距离处的变量间能彼此预测对方,当一个变量填充时另一个总是空的或者总是填充的,或者都是空的

树叶的高度显示预测错误的频率

和矩阵Matrix一样,只能处理50个变量,但是通过简单的转置操作即可处理更多更大的数据集

posted @ 2019-09-04 16:28  九命猫幺  阅读(11529)  评论(0编辑  收藏  举报