📌  相关文章
📜  在 Pandas DataFrame 中计算一列或多列中的 NaN 值(1)

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

在 Pandas DataFrame 中计算一列或多列中的 NaN 值

在数据处理过程中,经常会遇到 NaN (Not a Number) 值。 Pandas 是一个功能强大的数据处理库,提供了许多方法来处理 NaN 值。

检查 NaN 值

可以使用 isnull() 方法检查 DataFrame 中的 NaN 值。该方法将返回一个布尔值 DataFrame,指示每个元素是否为 NaN。

下面是一个示例:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [np.nan, 4, 5], 'C': [6, 7, 8]})
print(df.isnull())

这将输出:

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

在这里,我们可以看到数据框的每个元素是否为 NaN。 如果是,那么该元素的值为 True。

计算缺失值

可以使用 Pandas 中的许多方法计算缺失值。 下面是一些有用的方法:

count()

count()方法将计算每个列中的非 NaN 值数。 这将帮助我们在 DataFrame 中找到缺失值。

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [np.nan, 4, 5], 'C': [6, 7, 8]})
print(df.count())

这将输出:

A    2
B    2
C    3
dtype: int64

在这里,我们可以看到哪些列包含 NaN 值,以及每列中的非 NaN 值数量。

dropna()

dropna()方法将删除含有 NaN 值的行或列。

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [np.nan, 4, 5], 'C': [6, 7, 8]})
print(df.dropna()) # 删除含有 NaN 值的行
print(df.dropna(axis=1)) # 删除含有 NaN 值的列

这将输出:

     A    B  C
1  2.0  4.0  7
   C
0  6
1  7
2  8
fillna()

fillna()方法将使用指定的值来填充 NaN 值。

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [np.nan, 4, 5], 'C': [6, 7, 8]})
print(df.fillna(0)) # 将 NaN 值替换为 0

这将输出:

     A    B  C
0  1.0  0.0  6
1  2.0  4.0  7
2  0.0  5.0  8
replace()

replace()方法将使用指定的值来替换指定的值。

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [np.nan, 4, 5], 'C': [6, 7, 8]})
print(df.replace(np.nan, 0)) # 将 NaN 值替换为 0

这将输出:

     A    B  C
0  1.0  0.0  6
1  2.0  4.0  7
2  0.0  5.0  8
结论

在 Pandas 中,有多种方法可以使用、计算和处理缺失值。 在实际使用中,您可以根据需要选择其中一个方法。