5.3.2 查看缺失情况

查看数据缺失的情况主要结合Pandas(统计)和Missingno(可视化)来介绍。

1.Pandas统计缺失情况

Pandas提供的接口可以轻松处理和统计缺失数据。例如,Pandas对象的所有描述性统计默认都不包括缺失数据。

对于元素级别的判断,将对应的所有元素的位置都列出来,元素为空或者NA就显示True,否则就显示False:


titanic_df.isnull()

对于列级别的判断,只要该列有为空或NA的元素,就为True,否则为False:


titanic_df.isnull().any()

统计空值个数:


titanic_df.isnull().sum()

2.Missingno缺失值可视化

Missingno提供了一个灵活且易于使用的缺失值数据可视化的Python库,可以快速直观地查看数据集完整性(或缺失性)的整体情况。直接使用pip install missingno安装即可。

missingno.matrix可以快速直观地以图案方式展示各个变量缺失值的分布情况。


import missingno as msno
#为了展示效果,只选取部分字段,调整了图片和字段大小
msno.matrix(
    df=titanic_df[['sex', 'age', 'fare', 'embarked', 'deck', 'embark_town']],
    figsize=(8, 4),
    fontsize=16)

输出如图5-18所示。

图5-18 缺失值矩阵图

使用missingno.heatmap查看缺失变量之间的相关性,它将输入的Dataframe通过dataframe.isnull()生成新的缺失值的Dataframe,然后计算变量缺失值的相关性。热力图可以很直观快速地观察哪些变量经常一起缺失,方便数据核验。


msno.heatmap(df=titanic_df, figsize=(8, 4), fontsize=18)

输出如图5-19所示。

图5-19 缺失值相关性图

missingno.bar利用条形图可以更直观地看出每个变量缺失的比例和数量情况,接口展示的是每个变量非空值的数量和比例。图5-20直观地展示出deck变量的缺失率最高。


msno.bar(
    df=titanic_df[['sex', 'age', 'fare', 'embarked', 'deck', 'embark_town']],
    figsize=(8, 6),fontsize=18)

图5-20 缺失值条形图