【发布时间】:2018-12-01 19:28:48
【问题描述】:
如何获得 pandas 数据框中所有值(NaN 除外)的平均值?
pd.DataFrame.mean() 仅给出每列(或行,设置axis=1 时)的平均值,但我想要整个事物的平均值。而df.mean().mean() 并不是最明智的选择(见下文)。
请注意,在我的具体真实案例中,数据框具有很大的多索引,这也使事情变得复杂。对于这无关紧要的情况,可以认为@EdChum 的答案更直接,在某些情况下这可能比更快的解决方案更可取。
示例代码
data1 = np.arange(16).reshape(4, 4)
df = pd.DataFrame(data=data1)
df.mean()
0 9.0
1 7.0
2 8.0
3 9.0
dtype: float64
df.mean().mean()
7.5
np.arange(16).mean()
7.5
有效,但如果我屏蔽了 df 的某些部分(实际上,它是数百行/列的相关矩阵,其本身的一半填充了冗余数据),它会变得有趣:
triang = np.triu_indices(4)
data2 = np.arange(4.,20.).reshape(4, 4)
data2[triang]=np.nan
df2 = pd.DataFrame(data=data2)
df2.mean().mean()
15.0
但是(8. + 12. + 13. + 16. + 17. + 18.)/6 是14.
我怎样才能最好地获得“真实”的意思,除了手动编写某种循环来完成上述操作?
【问题讨论】:
标签: python pandas dataframe mean