Logo
Section 1 / 6

缺失值的类型与表示

了解 Pandas 中如何表示缺失值。

导入

缺失值的类型与表示

了解 Pandas 中如何表示缺失值。

缺失值

在 DataFrame 中,一行(row)代表一个观测记录或数据点,一列(column)则表示该记录的某个特征或属性。有时,我们可能缺少某些观测记录的部分特征值。例如,有一个包含银行客户信息的 DataFrame,包括姓名、年龄、收入、地址等字段。如果某位客户的年龄信息缺失,那么这个位置就称为缺失值。

缺失值本质上是我们没有的数据。DataFrame 中出现缺失值的原因有很多,比如输入错误、数据转换过程中出现问题等。处理缺失值是数据清洗和预处理中非常重要的一步。Pandas 库提供了灵活且高效的方法来处理这些缺失值。

缺失值的类型

为了构建一个可靠的缺失值处理机制,必须使用标准格式来表示缺失值。在 DataFrame 中,标准的缺失值表示方式是 NaN。但 NaN 不兼容整数类型,因此当整数类型的列中存在 NaN 时,整个列的数据类型会被提升为 float。

为了解决这个问题,Pandas 1.0 引入了一种新的整数类型缺失值表示方法 <NA>,但需要显式地将数据类型声明为 pd.Int64Dtype()。下面我们通过示例清楚地展示两者的区别。首先创建一个包含缺失值的 DataFrame。Pandas 支持使用 Python 的 None 和 NumPy 的 np.nan 作为缺失值标识,因此两者都可以用来表示缺失。

1import numpy as np 2import pandas as pd 3 4df = pd.DataFrame({ 5 "A": [1, 2, 3, np.nan], 6 "B": [2.4, 6.2, 5.1, np.nan], 7 "C": ["foo","zoo","bar", np.nan] 8}) 9 10print(df)

从上述代码的输出可以看出,由于最后一行在列 A 中存在缺失值,该列的数值被自动转换成了 float 类型。如果我们把这一列的数据类型改为 pd.Int64Dtype(),就可以保持其整数特性。

1import numpy as np 2import pandas as pd 3 4df = pd.DataFrame({ 5 "A": [1, 2, 3, np.nan], 6 "B": [2.4, 6.2, 5.1, np.nan], 7 "C": ["foo","zoo","bar", np.nan] 8}) 9 10df["A"] = df["A"].astype(pd.Int64Dtype()) 11 12print(df)

现在,列 A 中的值就以整数形式呈现,并使用 <NA> 表示缺失值。

使用Pandas进行日期操作

查找缺失的值