相关矩阵的平均值 - pandas dataframe

2023-12-19

我在 pandas python DataFrame 中有一个很大的相关矩阵:df (342, 342)。

如何获取上三角形中所有数字(不包括对角线上的 1)的平均值、标准差等?

谢谢。


另一个潜在的单行答案:

In [1]: corr
Out[1]:
          a         b         c         d         e
a  1.000000  0.022246  0.018614  0.022592  0.008520
b  0.022246  1.000000  0.033029  0.049714 -0.008243
c  0.018614  0.033029  1.000000 -0.016244  0.049010
d  0.022592  0.049714 -0.016244  1.000000 -0.015428
e  0.008520 -0.008243  0.049010 -0.015428  1.000000

In [2]: corr.values[np.triu_indices_from(corr.values,1)].mean()
Out[2]: 0.016381

编辑:添加性能指标

我的解决方案的性能:

In [3]: %timeit corr.values[np.triu_indices_from(corr.values,1)].mean()
10000 loops, best of 3: 48.1 us per loop

Theodros Zelleke 的单线解决方案的性能:

In [4]: %timeit corr.unstack().ix[zip(*np.triu_indices_from(corr, 1))].mean()
1000 loops, best of 3: 823 us per loop

帝斯曼解决方案的性能:

In [5]: def method1(df):
   ...:     df2 = df.copy()
   ...:     df2.values[np.tril_indices_from(df2)] = np.nan
   ...:     return df2.unstack().mean()
   ...:

In [5]: %timeit method1(corr)
1000 loops, best of 3: 242 us per loop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相关矩阵的平均值 - pandas dataframe 的相关文章

随机推荐