您如何在与 Pandas 的相关矩阵中找到最高相关性?关于如何用 R( Show correlations as an ordered list, not as a large matrix 或 Efficient 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/