📜  在 python 中用 pandas 表示 NaN(1)

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

在 Python 中用 Pandas 表示 NaN

在数据分析和处理中,缺失值是我们经常会遇到的问题之一。而在 Pandas 中,缺失值通常表示为 NaN(Not a Number),它是一个特殊的浮点数。在本文中,我们将介绍如何在 Pandas 中使用 NaN。

创建 DataFrame

首先,让我们创建一个简单的 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 表示缺失值,并演示了如何判断、填充、删除和替换缺失值。