首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python 数据竞赛常用 | 可视化数据集缺失情况

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

作者头像
叶庭云
发布2022-05-09 09:38:37
发布2022-05-09 09:38:37
41700
代码可运行
举报
文章被收录于专栏:Python进阶之路Python进阶之路
运行总次数:0
代码可运行

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

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

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

代码语言:javascript
代码运行次数:0
运行
复制
pip install missingno -i http://pypi.douban.com/simple --trusted-host pypi.douban.com


代码语言:javascript
代码运行次数:0
运行
复制
# 读取训练集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     # dpi
msno.matrix(df_t)

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

代码语言:javascript
代码运行次数:0
运行
复制
missing = df_t.isnull().sum()
missing = missing[missing > 0]
missing.sort_values(inplace=True)

missing_label = missing.index
missing_values = missing.values

per_value = ["{:.2%}".format(i / 30000) for i in missing_values]
missing_dic = {k: [v, z] for k, v, z in zip(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,
           )
 
# 为横向水平的柱图右侧添加数据标签
for rect in b:
    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)

for spine in ['top', 'right', "left", "bottom"]:
    ax.spines[spine].set_color('none')
    
# 不需要X横坐标上的label标签
plt.xticks(())

# 保存图片  展示show
plt.savefig("./results/01 训练集缺失值情况.png", dpi=500)
plt.show()

结果如下:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档