一个数据帧与另一个数据帧的相关矩阵

时间:2016-07-17 15:32:22

标签: python pandas numpy dataframe

我正在阅读this question的答案。然后提出了如何计算一个数据帧中所有列与来自另一个数据帧的所有列的相关性的问题。既然这个问题似乎没有得到回答,我想问它,因为我需要这样的东西。

所以说我有数据框AB

import pandas as pd
import numpy as np

A = pd.DataFrame(np.random.rand(24, 5), columns=list('abcde'))
B = pd.DataFrame(np.random.rand(24, 5), columns=list('ABCDE'))

如何获得如下所示的数据框:

pd.DataFrame([], A.columns, B.columns)

     A    B    C    D    E
a  NaN  NaN  NaN  NaN  NaN
b  NaN  NaN  NaN  NaN  NaN
c  NaN  NaN  NaN  NaN  NaN
d  NaN  NaN  NaN  NaN  NaN
e  NaN  NaN  NaN  NaN  NaN

但充满了适当的相关性?

1 个答案:

答案 0 :(得分:4)

一种方法是:

pd.concat([A, B], axis=1).corr().filter(B.columns).filter(A.columns, axis=0)

enter image description here

更有效的方法是:

Az = (A - A.mean())
Bz = (B - B.mean())

Az.T.dot(Bz).div(len(A)).div(Bz.std(ddof=0)).div(Az.std(ddof=0), axis=0)

你会得到与上面相同的东西。