如何计算数据帧中的nan值?

2024-04-25 10:17:23 发布

您现在位置:Python中文网/ 问答频道 /正文

什么是解释数据帧中nan值(不是数字)的最佳方法

以下代码:

import numpy as np
import pandas as pd
dfd = pd.DataFrame([1, np.nan, 3, 3, 3, np.nan], columns=['a'])
dfv = dfd.a.value_counts().sort_index()
print("nan: %d" % dfv[np.nan].sum())
print("1: %d" % dfv[1].sum())
print("3: %d" % dfv[3].sum())
print("total: %d" % dfv[:].sum())

产出:

nan: 0
1: 1
3: 3
total: 4

而所需的输出是:

nan: 2
1: 1
3: 3
total: 6

我将pandas 0.17与Python 3.5.0和Anaconda 2.4.0一起使用


Tags: 数据方法代码importpandasasnp数字
3条回答

要仅计算空值,可以使用^{}

In [11]:
dfd.isnull().sum()

Out[11]:
a    2
dtype: int64

这里a是列名,列中出现了两次null值

如果要仅统计数据帧df的列'a'中的NaN值,请使用:

len(df) - df['a'].count()

这里count()告诉我们非NaN值的数量,这是从值的总数中减去的(由len(df)给出)

要在df每列中计算NaN值,请使用:

len(df) - df.count()

如果要使用value_counts,请通过设置dropna=False(在0.14.1中添加),告诉它而不是删除NaN值:

dfv = dfd['a'].value_counts(dropna=False)

这也允许对列中缺少的值进行计数:

 3     3
NaN    2
 1     1
Name: a, dtype: int64

然后,代码的其余部分应按预期工作(注意,不必调用sum;只需print("nan: %d" % dfv[np.nan])即可)

计算数据帧所有列中所有NaN的一个好方法是

import pandas as pd 
import numpy as np


df = pd.DataFrame({'a':[1,2,np.nan], 'b':[np.nan,1,np.nan]})
print(df.isna().sum().sum())

使用单个求和,可以得到每列的NaN计数。第二个和,对这些列和求和

相关问题 更多 >