我想找出我的数据的每一列中NaN的数量。
当前回答
你可以试试:
In [1]: s = pd.DataFrame('a'=[1,2,5, np.nan, np.nan,3],'b'=[1,3, np.nan, np.nan,3,np.nan])
In [4]: s.isna().sum()
Out[4]: out = {'a'=2, 'b'=3} # the number of NaN values for each column
如果需要nan的总和:
In [5]: s.isna().sum().sum()
Out[6]: out = 5 #the inline sum of Out[4]
其他回答
假设您希望获得一个名为reviews的数据框架中称为price的列(系列)中缺失值(NaN)的数量
#import the dataframe
import pandas as pd
reviews = pd.read_csv("../input/wine-reviews/winemag-data-130k-v2.csv", index_col=0)
用n_missing_prices作为变量来获取缺失的值,简单地做
n_missing_prices = sum(reviews.price.isnull())
print(n_missing_prices)
Sum是这里的关键方法,在我意识到Sum是在这种情况下使用的正确方法之前,我试图使用count
你可以使用value_counts方法打印np.nan的值
s.value_counts(dropna = False)[np.nan]
如果你需要得到非NA (non-None)和NA (None)计数在不同的组拉出groupby:
gdf = df.groupby(['ColumnToGroupBy'])
def countna(x):
return (x.isna()).sum()
gdf.agg(['count', countna, 'size'])
这将返回每个组的非NA、NA和总条目数。
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.count.html#pandas.Series.count
pandas.Series.count
Series.count(level=None)[source]
返回系列中非na /null观测值的个数
使用isna()方法(或者它的别名isnull(),这也兼容较旧的pandas版本< 0.21.0),然后求和来计算NaN值。其中一列:
>>> s = pd.Series([1,2,3, np.nan, np.nan])
>>> s.isna().sum() # or s.isnull().sum() for older pandas versions
2
对于一些列,这也适用:
>>> df = pd.DataFrame({'a':[1,2,np.nan], 'b':[np.nan,1,np.nan]})
>>> df.isna().sum()
a 1
b 2
dtype: int64