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=Falsena_values参数。

首先是keep_default_na,这个参数直译过来就是”(在读取文件时)保持默认缺失值(列表)“。这个参数需要传入的是一个bool类型的数据,即“True”或者“False”。

在pandas读取文件时,keep_default_na的默认值为True,而将其改为False后,默认的缺失值列表就不再生效了。

如果我们同时设置了na_values,库则会按照va_values内部的列表而非默认列表来匹配缺失值。具体的实现代码如下

1
2
3
4
5
import pandas as pd
na_list = ["[]",'-']
data = pd.read_csv("某招聘网站数据.csv",
keep_default_na=False,
na_values=na_list)

这一段代码的功能是读取“某招聘网站数据.csv”这个文件,并且只将na_list内部的对象匹配为缺失值。

关闭缺失值匹配

当如果我们不需要匹配任何缺失值,只需要一个完整的DataFrame对象时,我们则可以引入keep_default_na=False,与此同时不设置na_values或者是将其设置为[]

但是如果数据量比较大,需要更好的性能,我们则可以使用na_filter参数。filter,可译为过滤器。所以这个参数的功能便是直接控制是否过滤缺失值。其所需传入的参数与keep_default_na一样,都是bool类型。

那么,如果na_filter=Falsekeep_default_na=False可被视为等效,那么为什么要使用na_filter=False呢?答案就在前面的描述中。

让我们来做个对比,keep_default_na=False的重点在于使默认缺失值列表不生效,而na_filter=False的重点在于使过滤缺失值功能不生效。keep_default_na=False并不会关闭过滤缺失值功能,所以va_values才能够与其联动。

最后留给各位一个小问题,如下两段代码的执行结果会是如何?

1
2
3
4
import pandas as pd
na_list = ["[]",'-']
data = pd.read_csv("某招聘网站数据.csv",
na_values=na_list)
1
2
3
4
5
import pandas as pd
na_list = ["[]",'-']
data = pd.read_csv("某招聘网站数据.csv",
na_filter=False,
na_values=na_list)

pandas文件读取时的缺失值处理——25-06-08 第15周 第1篇
https://blog.19870918.xyz/p/7c8289df7614495c86b9ca60b0e748d9/
Beitragsautor
zhangyi
Veröffentlicht am
June 8, 2025
Urheberrechtshinweis