我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

拿到一个数据集,首先就是要查看数据的合理性,是否存在着一些不合理的值,譬如空值。可以打印所有或者部分数据,然后人眼观测数据。或者通过df.info()之类的方式,数据化查看空值情况。本文讲述的是:图形化显示空值的情况,更加直观的观察泰坦尼克数据集的各个字段的空值率情况。

苏南大叔:数据可视化,以泰坦尼克数据集为例,柱状图展示字段空值率 - 空值率画图
数据可视化,以泰坦尼克数据集为例,柱状图展示字段空值率(图3-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码经验文章。本文测试环境:python@3.12.3。泰坦尼克数据集使用的是kaggle竞赛的版本。

加载数据集

本文的龙套数据集来自kaggle竞赛的泰塔尼克数据集。对这个数据集的初步分析,可以参考下面的文章:

代码如下:

import pandas as pd

train_df = pd.read_csv("kaggle\\train.csv")
test_df = pd.read_csv("kaggle\\test.csv")
all_df = pd.concat([train_df, test_df])

数据的每个字段是不是空值

检测的方法包括:df.isnull()或者df.isna()。参考文章:

check = all_df.isnull()
print(type(check), check)

或者

check = all_df.isna()
print(type(check), check)

使用.isnull().isna()dataframe,进行空值检测。得到的结果,依然是个DataFrame。其成员不是True就是False

求解空值所占比例

对于True或者False来说,True所占的比例,恰好等于其平均值。所以,使用.mean()进行计算。

check_mean = all_df.isnull().mean()
print(type(check_mean), check_mean)

如果严格按照平均数的定义来进行计算的话,是下面这样计算的。

percent = all_df.isnull().sum() / all_df.shape[0]
print(type(percent), percent)

苏南大叔:数据可视化,以泰坦尼克数据集为例,柱状图展示字段空值率 - 字段空值统计
数据可视化,以泰坦尼克数据集为例,柱状图展示字段空值率(图3-2)

输出一致:

<class 'pandas.core.series.Series'>
PassengerId    0.000000
Survived       0.319328
Pclass         0.000000
Name           0.000000
Sex            0.000000
Age            0.200917
SibSp          0.000000
Parch          0.000000
Ticket         0.000000
Fare           0.000764
Cabin          0.774637
Embarked       0.001528
dtype: float64

画柱图

使用plot画柱状图,代码如下:

records = (all_df.isnull().sum() / all_df.shape[0]).round(4) * 100

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
plt.figure(figsize=(10, 5))
# plt.xlabel("字段")
plt.ylabel("空值率")
plt.title("各个字段空值比例图")
# plt.ylim(0, 100)
records.plot(kind="bar")
plt.yticks(range(0, 101, 10))                                           # 控制y坐标刻度
for i, value in enumerate(records):
    plt.text(i, value + 0.5, f"{value:.2f}%", ha="center", va="bottom") # 柱图的顶部显示百分比
plt.show()

这里存在着一个plot画图显示中文的问题,参考文章:

苏南大叔:数据可视化,以泰坦尼克数据集为例,柱状图展示字段空值率 - 画柱状图
数据可视化,以泰坦尼克数据集为例,柱状图展示字段空值率(图3-3)

结论

从柱图的结果可以看到,除了Survived字段外,就Cabin字段里面的空值最多。可以考虑是不是删除掉这个字段数据,或者做其它的特殊处理。

苏南大叔的更多python文章,可以参考:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python