python 两个数据帧中单列之间的相关性测试
python correlation test between single columns in two dataframes
我有两个结构类似的 DF:
df1 = pd.DataFrame(np.random.randn(8, 4), columns=['A', 'B', 'C', 'D'])
df2 = pd.DataFrame(np.random.randn(8, 6), columns=['T', 'U', 'V', 'X','Y','Z'])
我想测试 DF1 的每一列与 DF2 的每一列之间的相关性 ('pearson')。然后将所有结果组合成一个相关矩阵。
过去有人问过类似的问题,但我的 DF1 有几列:
任何有关如何执行此操作的帮助都将非常有用。
直接计算:
# center and standardize
df1vals = (df1.values - df1.values.mean(axis=0)) / df1.values.std(axis=0)
df2vals = (df2.values - df2.values.mean(axis=0)) / df2.values.std(axis=0)
# compute correlation
pearsons = df1vals.T.dot(df2vals) / len(df1)
这有形状 (len(df1), len(df2))
如果确实需要使用corrwith
,那么:
pd.concat([
df1.corrwith(df2[c]) for c in df2
], axis=1, keys=df2.columns)
我有两个结构类似的 DF:
df1 = pd.DataFrame(np.random.randn(8, 4), columns=['A', 'B', 'C', 'D'])
df2 = pd.DataFrame(np.random.randn(8, 6), columns=['T', 'U', 'V', 'X','Y','Z'])
我想测试 DF1 的每一列与 DF2 的每一列之间的相关性 ('pearson')。然后将所有结果组合成一个相关矩阵。
过去有人问过类似的问题,但我的 DF1 有几列:
任何有关如何执行此操作的帮助都将非常有用。
直接计算:
# center and standardize
df1vals = (df1.values - df1.values.mean(axis=0)) / df1.values.std(axis=0)
df2vals = (df2.values - df2.values.mean(axis=0)) / df2.values.std(axis=0)
# compute correlation
pearsons = df1vals.T.dot(df2vals) / len(df1)
这有形状 (len(df1), len(df2))
如果确实需要使用corrwith
,那么:
pd.concat([
df1.corrwith(df2[c]) for c in df2
], axis=1, keys=df2.columns)