Python 数据竞赛常用 | 可视化数据集缺失情况

简介: 无论是打比赛还是在实际工程项目中,都会遇到数据缺失的情况,如果数据集较小,还能在 Excel 或者其他可视化软件大致看一下导致数据缺失的原因。但当数据集较大时,手工查看每个变量的缺失值是非常麻烦的一件事情。数据探索和预处理也是任何数据科学或机器学习工作流中的重要步骤。缺失数据可能是处理真实数据集时最常见的问题之一,数据丢失的原因很多,包括传感器故障、数据过时、数据管理不当,甚至人为错误。丢失的数据可能以单个值、一个要素中的多个值或整个要素丢失的形式出现。

无论是打比赛还是在实际工程项目中,都会遇到数据缺失的情况,如果数据集较小,还能在 Excel 或者其他可视化软件大致看一下导致数据缺失的原因。但当数据集较大时,手工查看每个变量的缺失值是非常麻烦的一件事情。


数据探索和预处理也是任何数据科学或机器学习工作流中的重要步骤。缺失数据可能是处理真实数据集时最常见的问题之一,数据丢失的原因很多,包括传感器故障、数据过时、数据管理不当,甚至人为错误。丢失的数据可能以单个值、一个要素中的多个值或整个要素丢失的形式出现。


重要的是,在进行数据分析或机器学习之前,需要我们对缺失的数据进行适当的识别和处理。许多机器学习算法不能处理丢失的数据,需要删除整行数据,其中只有一个丢失的值,或者用一个新值替换(插补)。


混乱的数据集?m i s s i n g n o missingnomissingno 提供了一个灵活易用的缺失数据可视化和实用程序的小型工具集(基于 m a t p l o t l i b matplotlibmatplotlib 的,兼容 p a n d a s pandaspandas 数据源),使你能够快速获得你的数据集的完整性(或缺乏完整性)的可视化摘要。只要 p i p pippip 安装上 m i s s i n g n o missingnomissingno 就可以开始了。


pipinstallmissingno-ihttp://pypi.douban.com/simple--trusted-hostpypi.douban.com


missingno 包含了 4 44 种类型图示:


  • matrix:m s n o . m a t r i x msno.matrixmsno.matrix空白性矩阵是一种数据密集显示图,可以直观的看到各个特征缺失数据分布情况,这种可视化图示最多可以容纳 50 5050 个 c o l u m n columncolumn,超过此范围的标签开始重叠或变得不可读;
  • heatmap:数据列之前缺失相关性分析图,展示了一个变量的存在或不存在对另一个变量的存在有多强烈的影响
  • dendrogram:通过树状图,您可以更全面地关联变量完成,揭示比 h e a t m a p heatmapheatmap 中可见的成对趋势更深的趋势。与m a t r i x matrixmatrix 图一样,在这种配置下最多只能显示 50 5050 个带标签的列。但是树状图只需翻转到水平配置即可更优雅地处理超大型数据集。
  • bar:msno.bar 是按列对无效性数据的简单可视化;


msno.matrix是使用最多的方法(剩余的方法用得较少),能快速直观地看到数据集的完整性情况。以 2021年MathorCup 大数据挑战赛的二手车估价训练集为例,可视化结果如下:


# 读取训练集excel数据   查看首尾10行df_t=pd.read_excel("train_data.xlsx")
df_t.head().append(df_t.tail())
plt.rcParams['font.sans-serif'] = ['SimHei']    # 显示中文plt.rcParams['axes.unicode_minus'] =False# 显示负号plt.rcParams['figure.dpi'] =500# dpimsno.matrix(df_t)



使用 missingno 库可视化,快速了解有多少缺失数据存在、发生在哪里。右边的sparkline 总结了数据完整性的一般形状,并标出了数据集中具有最大和最小空白性的行。


每列特征缺失数据数量条形图可视化和打印统计结果:


missing=df_t.isnull().sum()
missing=missing[missing>0]
missing.sort_values(inplace=True)
missing_label=missing.indexmissing_values=missing.valuesper_value= ["{:.2%}".format(i/30000) foriinmissing_values]
missing_dic= {k: [v, z] fork, v, zinzip(list(missing_label), missing_values, per_value)}
print(missing_dic)
plt.rcParams['font.sans-serif'] = ['SimHei']    # 显示中文# 可视化   水平柱形图fig, ax=plt.subplots(figsize=(6, 4), dpi=500)
b=ax.barh(range(len(missing_label)),
missing_values, color='blue',
ec="r", lw=1.2,
           )
# 为横向水平的柱图右侧添加数据标签forrectinb:
w=rect.get_width()
ax.text(w+180, rect.get_y() +rect.get_height() /2, '%d'%int(w),
ha='left', va='center', fontdict={
"family": "Times New Roman", "fontsize": 8            })
ax.set_ylim(bottom=0, top=14)
# 设置Y轴纵坐标上的刻度线标签。ax.set_yticks(range(len(missing_label)))
ax.set_yticklabels(missing_label)
ax.tick_params(axis='y', direction='in', labelsize=8, length=0)
forspinein ['top', 'right', "left", "bottom"]:
ax.spines[spine].set_color('none')
# 不需要X横坐标上的label标签plt.xticks(())
# 保存图片  展示showplt.savefig("./results/01 训练集缺失值情况.png", dpi=500)
plt.show()


结果如下:






补充学习:


目录
相关文章
|
1月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
8天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
27天前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
170 7
|
29天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
2月前
|
存储 数据可视化 数据挖掘
使用Python进行数据分析和可视化
本文将引导你理解如何使用Python进行数据分析和可视化。我们将从基础的数据结构开始,逐步深入到数据处理和分析的方法,最后通过实际的代码示例来展示如何创建直观的数据可视化。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。让我们一起探索数据的世界,发现隐藏在数字背后的故事!
|
2月前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
63 3
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析和可视化
【10月更文挑战第42天】本文将介绍如何使用Python进行数据分析和可视化。我们将从数据导入、清洗、探索性分析、建模预测,以及结果的可视化展示等方面展开讲解。通过这篇文章,你将了解到Python在数据处理和分析中的强大功能,以及如何利用这些工具来提升你的工作效率。
|
2月前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
90 0
|
2月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
81 0
|
2月前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
50 2