8

它总是让我烦恼的事情似乎很容易。我正在尝试计算按月和年分组的数据框中某些变量的非空值的数量。所以我可以做到这一点,效果很好

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

但我真的很想知道每组中有多少这些值是 NaN。所以我也想计算每个变量中的 Nans,以便我可以计算每组中丢失的百分比数据。我找不到执行此操作的功能。或者也许我可以通过计算组中的总项目来达到同样的目的。那么 NaN 将是 Total - 'Non-Null values'

我一直在尝试找出是否可以以某种方式计算索引值,但我无法做到。非常感谢您对此的任何帮助。最好的祝愿杰森

4

2 回答 2

7
df.isnull().sum()

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

于 2016-01-24T08:34:09.520 回答
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
于 2013-05-15T13:10:47.613 回答