以泰坦尼克数据集为例,探讨空值检测手段isna()和isnull()
发布于 作者:苏南大叔 来源:程序如此灵动~

话题回到泰坦尼克数据集,本文以该数据集为例,探讨对数据进行清洗处理中空值检测的几种方式。因为在数据清洗的领域里面,空值是一定影响数据预测的结果的,一定要提前预防。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码经验文章。测试环境:python@3.12.3
,pandas@2.2.2
,numpy@1.26.4
,xlrd@2.0.1
,openpyxl@3.1.2
。
空值检测数据集准备
数据集不同版本的选择,和后面的代码的编写是很紧密相关的。下面的链接可以对泰坦尼克数据集做较详细的描述。
- https://newsn.net/say/titanic.html
- https://newsn.net/say/sklearn-fetch_openml.html
- https://newsn.net/say/pandas-excel.html
对于na
空值,实际上是本文讨论的重点内容。什么样的数据可以被认为是na
,pandas
是有着自己的标准的。但是,这个标准可以被自定义。比如一些不合理的数据,也可以在读取excel
文件的时候,通过定义na_values
参数,就被自动转化为NA
值。
值得注意的是:read_excel()
的时候,是可以通过定义na_values
谁是NA
,来刻意改变空值的范围的。
isna() 和 isnull()
据目前的资料显示,.isna()
和.isnull()
的返回值完全一样。两者完全一致,其同时存在的理由,仅仅是使用习惯的历史问题。isnull()
函数是pandas
最初就具备的函数,而isna()
是后来为了与R语言中的命名习惯保持一致而引入的。
其返回值是个集合,并非单纯的True
或者False
。可以用于比较整个DataFrame
,或者某个Series
。
Series 空值检测
使用范例:
输出:
DataFrame空值检测
使用范例:
输出:

isna() / isnull() 结果对比
实际上这满屏幕的True
或者False
,没有什么实际的意义。False
表示非空,True
表示为空值。两者是否真的完全一致。还的进行进一步检测。下面的两个方案,实际上根据DataFrame
还是Series
,效果不一样。
方案一
输出:
这个输出结果可以看到:对于Series
来说,这个方法可用。但是,对于DataFrame
来说,并不好用。因为它的返回值并不是我们期待的单独的一个结果。
方案二【推荐】
输出:
显而易见,这个方案才是我们所需要的。相关文章:
总结
本文内容说了很多,其实仅仅阐述了一个事情。就是可以使用isna()
或者isnull()
来检测数据集里面,每条数据的每条字段是否为空。更多苏南大叔的python
内容,请参考:


