Python可视化查看数据集完整性: missingno库(用于数据分析前的数据检查)
数据分析之前首先要保证数据集的质量,missingno库提供了一个灵活易用的可视化工具来观察数据缺失情况,是基于matplotlib的,接受pandas数据源
快速开始
样例数据使用 NYPD Motor Vehicle Collisions Dataset 数据集. 运行下面命令获得数据
1 2 | pip install quilt quilt install ResidentMario /missingno_data |
加载数据到内存
1 2 3 | from quilt.data.ResidentMario import missingno_data collisions = missingno_data.nyc_collision_factors() collisions = collisions.replace( "nan" , np.nan) |
有几个主要函数来不同方式的可视化展示数据集数据缺失情况
Matrix
Matrix是使用最多的函数,能快速直观地看到数据集的完整性情况,矩阵显示
1 2 3 | import missingno as msno %matplotlib inline msno.matrix(collisions.sample(250)) |
右边的迷你图总结了数据集的总的完整性分布,并标出了完整性最大和最小的点
最多支持50列
可以通过figsize指定图像大小,例如这样msno.matrix(collisions.sample(250),figsize=(12,5))
如果数据是时序的,那可以用freq参数
1 2 3 | 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' ) |
Bar Chart
msno.bar可以简单的展示无效数据的条形图
1 | msno.bar(collisions.sample(1000)) |
Heatmap
热图
两个变量的无效相关范围从-1(如果一个变量出现,另一个肯定没有)到0(出现或不出现的变量对彼此没有影响)到1(如果一个变量出现,另一个肯定也是)
数据全缺失或全空对相关性是没有意义的,所以就在图中就没有了,比如date列就没有出现在图中
大于-1和小于1表示有强烈的正相关和负相关,但是由于极少数的脏数据所以并不绝对,这些例外的少数情况需要在数据加工时候予以注意
热图方便观察两个变量间的相关性,但是当数据集变大,这种结论的解释性会变差
Dendrogram
树状图
树状图采用由scipy提供的层次聚类算法通过它们之间的无效相关性(根据二进制距离测量)将变量彼此相加。在树的每个步骤中,基于哪个组合最小化剩余簇的距离来分割变量。变量集越单调,它们的总距离越接近0,并且它们的平均距离越接近零
在0距离处的变量间能彼此预测对方,当一个变量填充时另一个总是空的或者总是填充的,或者都是空的
树叶的高度显示预测错误的频率
和矩阵Matrix一样,只能处理50个变量,但是通过简单的转置操作即可处理更多更大的数据集
博客出处:http://www.cnblogs.com/yongestcat/
欢迎转载,转载请标明出处。
如果你觉得本文还不错,对你的学习带来了些许帮助,请帮忙点击右下角的推荐
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决