📜  如何计算 Pandas 中 NaN 值的数量?

📅  最后修改于: 2022-05-13 01:55:48.397000             🧑  作者: Mango

如何计算 Pandas 中 NaN 值的数量?

我们可能需要计算数据集中每个特征的 NaN 值的数量,以便我们决定如何处理它。例如,如果缺失值的数量非常少,那么我们可以选择丢弃这些观察;或者可能有一列缺少很多条目,因此我们可以决定是否包含该变量。

方法一:使用 describe()

我们可以使用describe()方法,它返回一个包含数据集详细信息的表。 count属性直接给出每列中非 NaN 值的计数。因此,如果我们知道观察的总数,我们可以获得 NaN 值的计数。

import pandas as pd 
import numpy as np
    
# dictionary of lists 
dict = { 'A':[1, 4, 6, 9], 
        'B':[np.NaN, 5, 8, np.NaN], 
        'C':[7, 3, np.NaN, 2],
        'D':[1, np.NaN, np.NaN, np.NaN] } 
  
# creating dataframe from the
# dictionary 
data = pd.DataFrame(dict) 
    
data.describe()

输出 :

pandas-count-nan-1

方法 2:使用 sum()
isnull()函数返回包含 True 和 False 值的数据集。由于 True 被视为 1 而 False 被视为 0,因此调用isnull()系列的sum()方法会返回 True 值的计数,该计数实际上对应于 NaN 值的数量。

在列中计算 NaN :

我们可以简单地在所需列中找到空值,然后得到总和。

import pandas as pd
import numpy as np
    
# dictionary of lists 
dict = { 'A':[1, 4, 6, 9], 
        'B':[np.NaN, 5, 8, np.NaN], 
        'C':[7, 3, np.NaN, 2],
        'D':[1, np.NaN, np.NaN, np.NaN] } 
    
# creating dataframe from the
# dictionary 
data = pd.DataFrame(dict) 
  
# total NaN values in column 'B'
print(data['B'].isnull().sum())

输出 :

2

连续计算 NaN :

可以使用 loc 或 iloc 选择行。然后我们像以前一样找到总和。

import pandas as pd 
import numpy as np
    
# dictionary of lists 
dict = { 'A':[1, 4, 6, 9],
        'B':[np.NaN, 5, 8, np.NaN], 
        'C':[7, 3, np.NaN, 2],
        'D':[1, np.NaN, np.NaN, np.NaN] }   
    
# creating dataframe from the 
# dictionary 
data = pd.DataFrame(dict) 
  
# total NaN values in row index 1
print(data.loc[1, :].isnull().sum())

输出 :

1

在整个 DataFrame 中计算 NaN :
要计算整个数据集中的 NaN,我们只需要调用sum()函数两次——一次用于获取每列的计数,另一次用于查找所有列的总和。

import pandas as pd 
import numpy as np
    
# dictionary of lists 
dict = {'A':[1, 4, 6, 9],
        'B':[np.NaN, 5, 8, np.NaN],
        'C':[7, 3, np.NaN, 2],
        'D':[1, np.NaN, np.NaN, np.NaN]} 
    
# creating dataframe from the
# dictionary 
data = pd.DataFrame(dict) 
  
# total count of NaN values
print(data.isnull().sum().sum())

输出 :

6