欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-30 18:17:54
数据分析之前首先要保证数据集的质量,missingno库提供了一个灵活易用的可视化工具来观察数据缺失情况,是基于matplotlib的,接受pandas数据源快速开始样例数据使用 NYPD Motor Vehicle Collisions Dataset 数据集. 运行下面命令获得数据pip ins... ......

数据分析之前首先要保证数据集的质量,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)

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

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

matrix

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

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

Python可视化查看数据集完整性: missingno库(用于数据分析前的数据检查)右边的迷你图总结了数据集的总的完整性分布,并标出了完整性最大和最小的点

最多支持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')

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

bar chart

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

msno.bar(collisions.sample(1000))

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

heatmap

热图

Python可视化查看数据集完整性: missingno库(用于数据分析前的数据检查)两个变量的无效相关范围从-1(如果一个变量出现,另一个肯定没有)到0(出现或不出现的变量对彼此没有影响)到1(如果一个变量出现,另一个肯定也是)

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

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

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

dendrogram

树状图

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

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

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

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

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