📜  如何检查 pandas 中的缺失值 - Python (1)

📅  最后修改于: 2023-12-03 15:09:11.365000             🧑  作者: Mango

如何检查 pandas 中的缺失值 - Python

在数据分析和数据处理中,经常会遇到缺失值的情况。因此,我们需要能够检查数据中的缺失值,在之后的处理中进行填充或删除。Pandas 库提供了许多方法来检查缺失值。

检查缺失值

我们可以使用 isnull() 方法来检查 DataFrame 或 Series 中的缺失值。该方法返回一个与 DataFrame 或 Series 大小相同的布尔值数组,其中值为 True 的位置表示缺失值。

import pandas as pd

data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Jack'], 
        'Age': [28, 34, 29, 42, None], 
        'Country': ['US', 'Canada', None, 'UK', 'Japan']}

df = pd.DataFrame(data)

print(df.isnull())

输出结果如下:

 | Name | Age | Country |
-|------|-----|---------|
0|False |False| False   |
1|False |False| False   |
2|False |True | True    |
3|False |False| False   |
4|False |False| False   |

我们可以看到第二行的 Age 和第三行的 Country 值为 True,这表示这两个位置的值为缺失值。

计算缺失值数量

我们可以使用 isnull().sum() 方法来计算 DataFrame 或 Series 中缺失值的数量。

import pandas as pd

data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Jack'], 
        'Age': [28, 34, 29, 42, None], 
        'Country': ['US', 'Canada', None, 'UK', 'Japan']}

df = pd.DataFrame(data)

print(df.isnull().sum())

输出结果如下:

Name       0
Age        1
Country    1
dtype: int64

我们可以看到,AgeCountry 列中有一个缺失值,分别为 1 和 1。

删除缺失值

我们可以使用 dropna() 方法来删除 DataFrame 或 Series 中的缺失值。默认情况下,dropna() 方法删除包含任何缺失值的行。我们可以使用 axis 参数来指定删除缺失值的行或列。

import pandas as pd

data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Jack'], 
        'Age': [28, 34, None, 42, None], 
        'Country': ['US', 'Canada', None, 'UK', 'Japan']}

df = pd.DataFrame(data)

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

print(df_dropped)

输出结果如下:

   Name  Age Country
0   Tom  28     US
1  Jack  34  Canada
3  Ricky 42     UK

我们可以看到第二行和第三行的 AgeCountry 值为缺失值,因此在删除包含缺失值的行时被删除了。

填充缺失值

我们可以使用 fillna() 方法来填充 DataFrame 或 Series 中的缺失值。通常,我们会使用缺失值前面的值进行填充。

import pandas as pd

data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Jack'], 
        'Age': [28, None, 29, 42, None], 
        'Country': ['US', 'Canada', 'China', 'UK', 'Japan']}

df = pd.DataFrame(data)

# 用前面的值进行填充
df_filled = df.fillna(method='ffill')

print(df_filled)

输出结果如下:

   Name   Age Country
0   Tom  28.0     US
1  Jack  28.0  Canada
2  Steve 29.0  China
3  Ricky 42.0     UK
4  Jack  42.0  Japan

我们可以看到第二行和第五行的 Age 值为缺失值,在填充时被填充为前面的值。

总结

在本文中,我们介绍了如何使用 Pandas 库检查、计算、删除、填充缺失值。有了这些方法,我们可以更好地处理数据,使得数据分析和处理更加精确和完整。