我有以下数据帧,这是执行标准pandas关联的结果:
df.corr()
abc xyz jkl
abc 1 0.2 -0.01
xyz -0.34 1 0.23
jkl 0.5 0.4 1
我有一些事情需要用这些相关性完成,但是这些计算需要排除值为1的所有单元格.1值是项目与自身完全相关的单元格,因此我我对它不感兴趣。:
确定最大相关对。结果是' jkl'和' abc'其相关系数为0.5
确定最小相关对。结果是#abc'和' xyz'其相关性为-0.34
确定整个数据帧的平均值/平均值(同样需要排除所有1的值)。结果是(0.2 + -0.01 + -0.34 + 0.23 + 0.5 + 0.4)/ 6 = 0,163333333
答案 0 :(得分:1)
检查一下:
from numpy import unravel_index,fill_diagonal,nanargmax,nanargmin
from bottleneck import nanmean
a = df(columns=['abc','xyz', 'jkl'])
a.loc['abc'] = [1, 0.2 , -0.01]
a.loc['xyz'] = [-0.34, 1, 0.23]
a.loc['jkl'] = [0.5, 0.4, 1]
b = a.values.copy()
fill_diagonal(b, None)
imax = unravel_index(nanargmax(b), b.shape)
imin = unravel_index(nanargmin(b), b.shape)
print(a.index[imax[0]],a.columns[imax[1]])
print(a.index[imin[0]],a.columns[imin[1]])
print(nanmean(b))
请不要忘记复制您的数据,否则np.fill_diagonal将删除其对角线值。