以泰坦尼克号数据集为例,如何统计每个字段的非na值数量?
发布于 作者:苏南大叔 来源:程序如此灵动~

实际工作中遇到的数据集都会存在着多多少少的不完美数据,即空值na
数据。面对这些不完美数据,在做进一步的处理之前。还应该有个大体的空值数量的了解和认知。本文就是对这一点进行讨论的。

苏南大叔的"程序如此灵动"博客,记录苏南大叔的代码编程经验文章。本文测试环境:python@3.12.3
,pandas@2.2.2
,numpy@1.26.4
,xlrd@2.0.1
,openpyxl@3.1.2
。
前置阅读
本文的主要目标就是:加载泰坦尼克数据集,并识别出它的空值情况。前置阅读的文章有:
老生常谈,在读取excel
文件的时候,可以通过na_values
参数,控制各种不合理的值为空值。测试代码:
这个的na_values
的设置,就是需要根据每个数据集的实际情况进行处理了。
df.describe()
df.describe()
方法的具体解释,参考下面的文章:
对于每个DataFrame
的字段空值统计的需求来说,由于这个.describe()
方法的返回值,都是一些平均数/最大值/最小值/中位数之类的统计,所以能说明的问题不多。不推荐。
返回值:
df.info() [推荐]
df.info()
可以对这个需求进行比较好的处理。参考文章:
返回值:
返回值里面,有个Non-Null Count
,非空值数量。可以看到:明显有些字段是有问题的。
df.count() [推荐]
df.count()
则可以更直接的统计出其中的空值的数量。但是,这个返回值则不侧重于非空值的统计。但是对于泰坦尼克号这个数据集来说,因为存在着全部不为空值的字段。所以,也是可以直观的感受到非空值的数量的。
输出:
还可以直接计算某个字段的非空值(正常值)的数量。
输出:
isna()扩展
如果对.isna()
的结果进行统计的话,也是可以的。不过就是表达式略显复杂,显得效率有待提升。
输出:
数据总条数 / 空值条数
特别需要注意的是:本文统计的是非空值,而不是空值。所以,想得到空值数量的话,还需要使用总条数减去上面得到的值。可以使用下面的方式,来直观的获得数据总条数。
输出:
结束语
对空值的基本情况有了大体的了解后,下一步的操作就是如何消灭掉这些空值了,文章待续。


