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

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

适用场景


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


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


安装及引用


pip install missingno
import missingno as msno


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


import numpy as np
import pandas as pd


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


640.png


导入数据


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))


640.png


空白越多说明缺失越严重


右侧的迷你图概述了数据完整性的一般形状,并指出了数据集中具有最大和最小无效值的行数。需要说明的是,这个矩阵图最多容纳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))

640.png

绘制缺失值热力图


missingno相关性热力图可以显示无效的相关性:一个变量的存在或不存在如何强烈影响的另一个的存在。


数值为1:两个变量一个缺失另一个必缺失;


数值为-1:一个变量缺失另一个变量必然不缺失。


数值为0:变量缺失值出现或不出现彼此没有影响。


热力图非常适合于选择变量对之间的数据完整性关系,但是当涉及到较大的关系时,其解释力有限,并且它不特别支持超大型数据集。


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


msno.heatmap(collisions)


640.png

缺失值树状图


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


msno.dendrogram(collisions)

640.png


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


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

相关文章
|
4天前
|
Python
Python 内置正则表达式库re的使用
正则表达式是记录文本规则的代码,用于查找和处理符合特定规则的字符串。在Python中,常通过原生字符串`r'string'`表示。使用`re.compile()`创建正则对象,便于多次使用。匹配字符串有`match()`(从开头匹配)、`search()`(搜索首个匹配)和`findall()`(找所有匹配)。替换字符串用`sub()`,分割字符串则用`split()`。
17 3
|
4天前
|
数据可视化 数据挖掘 数据处理
Altair:Python数据可视化库的魅力之旅
Altair:Python数据可视化库的魅力之旅
11 0
|
4天前
|
SQL 关系型数据库 数据库连接
使用 Python 访问数据库的基本方法
【5月更文挑战第12天】在Python中操作数据库涉及安装数据库驱动(如mysql-connector-python, psycopg2, pymongo)、连接数据库、执行查询/更新、处理结果集及关闭连接。使用ORM(如SQLAlchemy)可简化操作。通过上下文管理器(with语句)能更好地管理资源和错误。注意根据实际需求处理事务、错误和安全性,例如使用SSL连接。
23 2
|
1天前
|
程序员 开发者 Python
Python中的装饰器:优雅而强大的函数修饰工具
在Python编程中,装饰器是一种强大的工具,它可以简洁地实现函数的增强、扩展和重用。本文将深入探讨Python中装饰器的工作原理、常见应用场景以及如何自定义装饰器,帮助读者更好地理解和运用这一重要的编程概念。
|
2天前
|
网络协议 数据处理 调度
深入探索Python异步编程:asyncio库的应用与实践
在现代软件开发中,异步编程已成为处理并发和I/O密集型任务的重要策略。本文将带您深入探索Python的asyncio库,解析其背后的设计原理,并通过实例展示如何在实际项目中应用asyncio实现高效的异步编程。我们不仅会探讨asyncio的基本用法,还会分析其性能优势,并探讨其与其他并发模型的比较。此外,文章还将涵盖asyncio在Web开发、网络编程和数据处理等场景中的应用案例,帮助您更好地理解并掌握这一强大的异步编程工具。
|
2天前
|
SQL 物联网 关系型数据库
sqlmap工具的使用 (超详细附工具版)_python sqlmap
sqlmap工具的使用 (超详细附工具版)_python sqlmap
|
2天前
|
程序员 Python
tesseract库的安装与使用及在python中使用,Python程序员秋招三面蚂蚁金服
tesseract库的安装与使用及在python中使用,Python程序员秋招三面蚂蚁金服
|
2天前
|
Python
Python基础教程: math库常用函数(1),Python这些高端技术只有你还不知道
Python基础教程: math库常用函数(1),Python这些高端技术只有你还不知道
|
2天前
|
Python
使用Python的openpyxl库
【5月更文挑战第17天】使用Python的openpyxl库
13 2
|
3天前
|
数据可视化 Python
Python----matplotlib库
Python----matplotlib库
11 1