首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >有np.nan的熊猫数据平均值的最佳计算方法是什么?

有np.nan的熊猫数据平均值的最佳计算方法是什么?
EN

Stack Overflow用户
提问于 2019-07-28 01:16:01
回答 1查看 87关注 0票数 1

我试图计算熊猫数据的平均值(所有这些值都是数字的,而不是“如何计算熊猫DataFrame的平均值和NaN值”的问题),其中包含大量的np.nan。

我附带了这段代码,顺便说一句,它运行得很好:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
my_df = pd.DataFrame ([[0,10,np.nan,220],\
[1,np.nan,21,221],[2,12,22,np.nan],[np.nan,13,np.nan,np.nan]])

print(my_df.values.flatten()[~np.isnan(my_df.values.flatten())].mean())

但是,我发现这一行代码提供了相同的结果,但我不明白为什么:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(my_df.values[~np.isnan(my_df.values)].mean())

这真的一样吗,我能安全地使用吗?我的意思是,my_df.values[~np.isnan(my_df.values)仍然是一个不平坦的数组,那么它中的np.nan发生了什么呢?

任何改进都是受欢迎的,如果你看到一种更有效率和节能型的方法来做到这一点。非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-28 01:19:32

这真的一样吗,我能安全地使用吗?

是的,因为这里的numpy掩盖了NaNs,然后它将计算该数组上的平均值。但你把这里弄得太复杂了。

您可以在这里使用numpy的 [numpy-doc]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> np.nanmean(my_df)
52.2

因此,NaN值没有被考虑在内(无论是在和还是在平均值的计数中)。我认为这可能比用掩蔽计算平均值更具有说明性,因为上面的内容说明了您正在做的事情,而没有说明您是如何做到的。

如果您想计算NaNs,我们可以用0 (类似于@abdullah.cu says )替换它们,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> my_df.fillna(0).values.mean()
32.625
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57239459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文