python корреляционный тест между отдельными столбцами в двух фреймах данных - PullRequest
0 голосов
/ 31 марта 2020

У меня есть два 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'])

Я хотел бы проверить корреляцию («Pearson») между каждым отдельным столбцом DF1 с каждым отдельным столбцом DF2. Затем объедините все результаты в одну корреляционную матрицу.

Подобный вопрос задавался в прошлом, но мой DF1 имеет несколько столбцов:

Корреляция между двумя фреймами данных

Любая помощь в том, как это сделать, будет великолепной.

1 Ответ

1 голос
/ 31 марта 2020

Вычислите это непосредственно:

# 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)
...