📅  最后修改于: 2023-12-03 15:09:11.365000             🧑  作者: Mango
在数据分析和数据处理中,经常会遇到缺失值的情况。因此,我们需要能够检查数据中的缺失值,在之后的处理中进行填充或删除。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
我们可以看到,Age
和 Country
列中有一个缺失值,分别为 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
我们可以看到第二行和第三行的 Age
和 Country
值为缺失值,因此在删除包含缺失值的行时被删除了。
我们可以使用 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 库检查、计算、删除、填充缺失值。有了这些方法,我们可以更好地处理数据,使得数据分析和处理更加精确和完整。