社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

缺失值可视化Python工具库:missingno

小白学视觉 • 3 年前 • 212 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

向大家推荐一款非常实用的缺失值可视化工具库:missingno

适用场景

无论是打比赛还是在实际工程项目中,都会遇到数据缺失的情况,如果数据集较小,还能在excel或者其他可视化软件大致看一下导致数据缺失的原因,那么数据集较大时,想要探索其中规律,无疑难度也是越来越大。

missingno提供了一个灵活且易于使用的缺少数据可视化工具和实用程序的小型工具集,使你可以快速直观地概述数据集的完整性。

安装及引用

pip install missingno
import missingno as msno

missingno一般配合numpy和pandas一起使用:

import numpy as np
import pandas as pd

案例中还会用到quilt,这是一个数据包管理器,可以让你像管理代码一样管理数据,anaconda没有内置,所以需要安装一下。

导入数据

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

## 绘制缺失值矩阵图
msno.matrix无效矩阵是一个数据密集的显示,它可以快速直观地看出数据完整度。  
msno.matrix(collisions.sample(250))

空白越多说明缺失越严重

右侧的迷你图概述了数据完整性的一般形状,并指出了数据集中具有最大和最小无效值的行数。需要说明的是,这个矩阵图最多容纳50个变量,超过此范围的标签开始重叠或变得不可读,默认情况下,大尺寸显示器会忽略它们。

如果要处理时间序列数据,则可以使用关键字参数指定周期性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')

![](https://my-wechat.oss-cn-beijing.aliyuncs.com/image_20200403162803.png)

绘制缺失值条形图

条形图提供与矩阵图相同的信息,但格式更简单。msno.bar(collisions.sample(1000))

绘制缺失值热力图

missingno相关性热力图可以显示无效的相关性:一个变量的存在或不存在如何强烈影响的另一个的存在。
数值为1:两个变量一个缺失另一个必缺失;
数值为-1:一个变量缺失另一个变量必然不缺失。
数值为0:变量缺失值出现或不出现彼此没有影响。
热力图非常适合于选择变量对之间的数据完整性关系,但是当涉及到较大的关系时,其解释力有限,并且它不特别支持超大型数据集。

注:始终为满或始终为空的变量没有任何有意义的关联,因此会从可视化中删除。

msno.heatmap(collisions)

缺失值树状图

通过树状图,可以更全面地观察缺失变量的关联性,揭示比关联热力图更深刻的相关关系:
msno.dendrogram(collisions)

树状图使用层次聚类算法通过变量的无效相关性(以二进制距离来衡量)将变量彼此分类。在树的每个步骤中,根据哪个组合最小化其余群集的距离来对变量进行拆分。变量集越单调,它们的总距离越接近零,而它们的平均距离(y轴)越接近零。以零距离链接在一起的簇叶完全可以预测彼此的存在-一个变量在填充另一个变量时可能始终为空,或者它们可能始终都被填充或都为空,依此类推。

簇叶几乎分裂为零,但不分裂为零,彼此预测得很好,但仍不完美。如果你自己的数据集的解释是,这些列实际上是或者应该是在无效相互匹配(例如,作为CONTRIBUTING FACTOR VEHICLE 2和VEHICLE TYPE CODE 2应该),那么集群叶的高度告诉你,在绝对数量,记录多久是“不匹配”或提交错误的文件,也就是说,如果您愿意,则必须填写或删除多少个值。

小白团队出品:零基础精通语义分割↓

下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程 即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133142
 
212 次点击