您如何在与 Pandas 的相关矩阵中找到最高相关性?关于如何用 R( Show correlations as an ordered list, not as a large matrixEfficient way to get highly correlated pairs from large data set in Python or R )做到这一点有很多答案,但我想知道如何用 Pandas 做到这一点?在我的情况下,矩阵是 4460x4460,所以不能在视觉上做到这一点。

最佳答案

您可以使用 DataFrame.values 来获取数据的 numpy 数组,然后使用 NumPy 函数(例如 argsort())来获取最相关的对。

但是如果你想在 Pandas 中这样做,你可以 unstack 并对 DataFrame 进行排序:

import pandas as pd
import numpy as np

shape = (50, 4460)

data = np.random.normal(size=shape)

data[:, 1000] += data[:, 2000]

df = pd.DataFrame(data)

c = df.corr().abs()

s = c.unstack()
so = s.sort_values(kind="quicksort")

print so[-4470:-4460]

这是输出:
2192  1522    0.636198
1522  2192    0.636198
3677  2027    0.641817
2027  3677    0.641817
242   130     0.646760
130   242     0.646760
1171  2733    0.670048
2733  1171    0.670048
1000  2000    0.742340
2000  1000    0.742340
dtype: float64

关于python - 从 Pandas 的大型相关矩阵中列出最高相关对?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17778394/

10-14 19:35