📅  最后修改于: 2023-12-03 15:37:27.359000             🧑  作者: Mango
在数据分析和处理中,缺失值是我们经常会遇到的问题之一。而在 Pandas 中,缺失值通常表示为 NaN(Not a Number),它是一个特殊的浮点数。在本文中,我们将介绍如何在 Pandas 中使用 NaN。
首先,让我们创建一个简单的 DataFrame,其中包含一些缺失值:
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, pd.NaT, 4],
'B': [5, pd.NaT, 7, 8],
'C': [pd.NaT, pd.NaT, pd.NaT, pd.NaT],
'D': [10, 11, 12, 13]
})
print(df)
输出:
A B C D
0 1 5 NaT 10
1 2 NaT NaT 11
2 NaT 7 NaT 12
3 4 8 NaT 13
在这个示例中,我们使用 pd.NaT
来表示时间数据类型中的缺失值。
我们可以使用 isna()
或者 isnull()
方法来检查 DataFrame 中的缺失值:
print(df.isna())
print(df.isnull())
输出:
A B C D
0 False False True False
1 False True True False
2 True False True False
3 False False True False
这两个方法返回的结果完全一样。如果一个 DataFrame 的某个元素为空,那么 isna()
或者 isnull()
方法返回 True,否则返回 False。
我们可以使用 fillna()
方法来填充缺失值。下面的示例中,我们将缺失值填充为 -1:
print(df.fillna(-1))
输出:
A B C D
0 1 5 -1 10
1 2 -1 -1 11
2 -1 7 -1 12
3 4 8 -1 13
当然,我们也可以选择其他填充方式,例如使用缺失值前面的数据来填充:
print(df.fillna(method='ffill'))
输出:
A B C D
0 1 5 NaT 10
1 2 5 NaT 11
2 2 7 NaT 12
3 4 8 NaT 13
我们可以使用 dropna()
方法来删除 DataFrame 中的缺失值。默认情况下,dropna()
只要某一行或列存在缺失值,就会删除该行或列:
print(df.dropna())
输出:
A B C D
3 4 8 NaT 13
我们也可以使用 thresh
参数来指定一行或列至少需要几个非缺失值,才不会被删除:
print(df.dropna(thresh=2)) # 至少需要有 2 个非缺失值才不会被删除
输出:
A B C D
0 1 5 NaT 10
1 2 NaT NaT 11
2 NaT 7 NaT 12
3 4 8 NaT 13
我们可以使用 replace()
方法来将特定的值替换为缺失值:
print(df.replace(2, pd.NaT))
输出:
A B C D
0 1 5 NaT 10
1 NaT NaT NaT 11
2 NaT 7 NaT 12
3 4 8 NaT 13
另外,我们也可以使用 replace()
方法来将缺失值替换为其他值:
print(df.replace(pd.NaT, -1))
输出:
A B C D
0 1 5 -1 10
1 2 -1 -1 11
2 -1 7 -1 12
3 4 8 -1 13
在本文中,我们介绍了如何在 Pandas 中使用 NaN 表示缺失值,并演示了如何判断、填充、删除和替换缺失值。