pandas文件读取时的缺失值处理——25-06-08 第15周 第1篇
前言
不管诸位于何时何地阅读此文,总之先祝你早上中午晚上好。
这一周学习的主要内容是pandas库数据清洗的核心之一,即对dataframe内部的缺失值与重复值进行处理。如果前后时间太久,忘了dataframe是什么,那么还是先复习一下前面的文章为妙。
pandas文件读取常用函数——25-06-01 第14周 第一篇
pandas库提供了许多函数进行数据的读取和处理。上一周我们主要讲的是对文件的基础读取。但其实还有一个很重要的内容没有讲到。现在我们先把这一部分,即读取时对缺失值的标记这个部分补上,对缺失值与重复值的清洗则在下一篇文章中另行讲解。
下面的代码使用的数据集为:某招聘网站数据.csv,如有需要,请自行下载。
修改缺失值匹配
在用read系列函数读取 .csv,.xlsx等表格文件时,pandas库会自动根据库中内置的缺失值列表对对应的数据替换为pd.NA对象。但是如果我们只需要替换部分缺失值,或者不需要替换缺失值,那么应该怎么做呢?
如果只是需要部分缺失值,答案是在读取时加入keep_default_na=False与na_values参数。
首先是keep_default_na,这个参数直译过来就是”(在读取文件时)保持默认缺失值(列表)“。这个参数需要传入的是一个bool类型的数据,即“True”或者“False”。
在pandas读取文件时,keep_default_na的默认值为True,而将其改为False后,默认的缺失值列表就不再生效了。
如果我们同时设置了na_values,库则会按照va_values内部的列表而非默认列表来匹配缺失值。具体的实现代码如下
1 | |
这一段代码的功能是读取“某招聘网站数据.csv”这个文件,并且只将na_list内部的对象匹配为缺失值。
关闭缺失值匹配
当如果我们不需要匹配任何缺失值,只需要一个完整的DataFrame对象时,我们则可以引入keep_default_na=False,与此同时不设置na_values或者是将其设置为[]。
但是如果数据量比较大,需要更好的性能,我们则可以使用na_filter参数。filter,可译为过滤器。所以这个参数的功能便是直接控制是否过滤缺失值。其所需传入的参数与keep_default_na一样,都是bool类型。
那么,如果na_filter=False与keep_default_na=False可被视为等效,那么为什么要使用na_filter=False呢?答案就在前面的描述中。
让我们来做个对比,keep_default_na=False的重点在于使默认缺失值列表不生效,而na_filter=False的重点在于使过滤缺失值功能不生效。keep_default_na=False并不会关闭过滤缺失值功能,所以va_values才能够与其联动。
最后留给各位一个小问题,如下两段代码的执行结果会是如何?
1 | |
1 | |