如何在Pandas数据框分组中计算索引或Null值的数量

9

总是那些看似简单的事情让我感到烦恼。我试图计算按月份和年份分组的 Dataframe 中某些变量的非空值数量。所以我可以做到这一点,这很好用:

counts_by_month=df[variable1, variable2].groupby([lambda x: x.year,lambda x: x.month]).count()

但我真正想知道的是每个组中有多少个值是NaN。因此,我还想计算每个变量中的Nans数量,以便可以计算出每个组中缺失数据的百分比。我找不到一个函数来实现这一点。或者,也许我可以通过计算组内的总项目数来达到相同的目的。然后NaN就会是Total - 'Non-Null values'
我一直在试图找出是否可以计算索引值,但我还没有能够做到。如有任何帮助将不胜感激。
祝一切顺利 Jason
2个回答

8
df.isnull().sum()

更快,不需要自定义函数 :)

4
对于这个问题,df.isnull().sum(axis=1) 更为适合。它在计算每一行中缺失值的数量。 - steco
这取决于您想要每行还是每列的缺失值。 - GrimSqueaker

6
In [279]: df
Out[279]:
     A         B         C         D         E
a  foo       NaN  1.115320 -0.528363 -0.046242
b  bar  0.991114 -1.978048 -1.204268  0.676268
c  bar  0.293008 -0.708600       NaN -0.388203
d  foo  0.408837 -0.012573  1.019361  1.774965
e  foo  0.127372       NaN       NaN       NaN

In [280]: def count_missing(frame):
    return (frame.shape[0] * frame.shape[1]) - frame.count().sum()
   .....:

In [281]: df.groupby('A').apply(count_missing)
Out[281]:
A
bar    1
foo    4
dtype: int64

太好了。谢谢你的示例!SHAPE给了我所需的信息,然后我就可以计算NaN值了。非常感谢。 - user1911866

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接