跳到主要内容

Pandas 缺失值检测

在数据分析中,缺失值(Missing Values)是一个常见的问题。缺失值可能是由于数据采集过程中的错误、数据存储问题或其他原因导致的。Pandas 提供了强大的工具来检测和处理缺失值,帮助我们更好地清洗数据。

什么是缺失值?

缺失值通常表示为 NaN(Not a Number),在 Pandas 中,NaN 是一个特殊的浮点数,用于表示缺失或不可用的数据。除了 NaN,Pandas 还可以处理其他形式的缺失值,如 None 或空字符串。

检测缺失值

Pandas 提供了多种方法来检测数据中的缺失值。以下是一些常用的方法:

1. 使用 isna()isnull() 方法

isna()isnull() 是 Pandas 中用于检测缺失值的方法,它们的功能完全相同。这两个方法会返回一个布尔型的 DataFrame 或 Series,其中 True 表示缺失值,False 表示非缺失值。

python
import pandas as pd

# 创建一个包含缺失值的 DataFrame
data = {'A': [1, 2, None], 'B': [4, None, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)

# 检测缺失值
print(df.isna())

输出:

       A      B      C
0 False False False
1 False True False
2 True False False

2. 使用 notna()notnull() 方法

notna()notnull()isna()isnull() 的反向操作,它们返回一个布尔型的 DataFrame 或 Series,其中 True 表示非缺失值,False 表示缺失值。

python
# 检测非缺失值
print(df.notna())

输出:

       A      B     C
0 True True True
1 True False True
2 False True True

3. 统计缺失值数量

我们可以使用 sum() 方法来统计每列中缺失值的数量。

python
# 统计每列的缺失值数量
print(df.isna().sum())

输出:

A    1
B 1
C 0
dtype: int64

处理缺失值

检测到缺失值后,我们通常需要对其进行处理。常见的处理方法包括删除缺失值、填充缺失值等。

1. 删除缺失值

使用 dropna() 方法可以删除包含缺失值的行或列。

python
# 删除包含缺失值的行
df_dropped = df.dropna()
print(df_dropped)

输出:

     A    B  C
0 1.0 4.0 7

2. 填充缺失值

使用 fillna() 方法可以用指定的值填充缺失值。

python
# 用 0 填充缺失值
df_filled = df.fillna(0)
print(df_filled)

输出:

     A    B  C
0 1.0 4.0 7
1 2.0 0.0 8
2 0.0 6.0 9

实际案例

假设我们有一个包含学生考试成绩的 DataFrame,其中某些学生的成绩缺失。我们需要检测并处理这些缺失值。

python
# 创建学生成绩 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Math': [90, 85, None, 78],
'English': [88, None, 92, 85],
'Science': [95, 89, 91, None]}
df_students = pd.DataFrame(data)

# 检测缺失值
print(df_students.isna())

# 用平均成绩填充缺失值
df_students_filled = df_students.fillna(df_students.mean())
print(df_students_filled)

输出:

    Name   Math  English  Science
0 False False False False
1 False False True False
2 False True False False
3 False False False True

Name Math English Science
0 Alice 90.0 88.000 95.000
1 Bob 85.0 88.333 89.000
2 Charlie 84.3 92.000 91.000
3 David 78.0 85.000 91.667

总结

在数据分析中,检测和处理缺失值是一个重要的步骤。Pandas 提供了多种方法来检测和处理缺失值,包括 isna()notna()dropna()fillna() 等。通过掌握这些方法,我们可以更好地清洗数据,为后续的分析和建模打下坚实的基础。

附加资源

练习

  1. 创建一个包含缺失值的 DataFrame,并使用 isna() 方法检测缺失值。
  2. 使用 fillna() 方法将缺失值填充为列的平均值。
  3. 尝试使用 dropna() 方法删除包含缺失值的行,并观察结果。