如何计算所有可能行之间的相关性

Posted

技术标签:

【中文标题】如何计算所有可能行之间的相关性【英文标题】:how can I calculate correlation between all possible rows 【发布时间】:2017-05-02 19:54:03 【问题描述】:

我在 xls 中有一个非常大的数据。一小部分如下图所示

 Name    V1  V2  V3  V4  V5
    A   2   2   2   1   2
    Ab  10  10  9   1   10
    AC  14  7   1   2   14
    AD  5   1   1   1   5
    AF  14  14  11  1   14
    Ag  3   3   3   1   3
    Qn  7   7   7   3   7
    Ah  35  3   3   1   35

我想计算行相关系数的所有可能组合 例如,第 1 行和第 2 行,第 1 行和第 3 行……

我喜欢这样的输出

Name1   Name2     Correlation Coef
A       Ab    
A       AC
.          .
.          .
.          .

我找到了这个,但我不知道如何使用它 Calculating Pearson correlation and significance in Python

这个解决方案给出了答案,但问题是我无法做出我想要的输出 http://lilithelina.tumblr.com/post/135265946959/data-analysis-pearson-correlation-python

【问题讨论】:

【参考方案1】:

以 pandas 数据框的形式读取您的数据(例如,df)。致电df.T.corr().unstack().reset_index().unstack() 构建分层索引,.reset_index() 将其转换为列,.T 关联行而不是列。

results = df.T.corr().unstack().reset_index(name="corr")
print(results)
#   level_0 level_1      corr
#0   A1L020  A1L020  1.000000
#1   A1L020  A1X283  0.993933
#2   A1L020  A2A3N6  0.499363
#3   A1L020  A2RTX5  0.408248
#....
results.to_csv("some_file.csv")

【讨论】:

添加了.unstack() 刚刚做了 - 并更改了列名。 您必须将数据保存为 CSV,而不是 XLS:pandas.pydata.org/pandas-docs/stable/generated/… 添加了保存到 CSV。 当你阅读一个CVS文件时,你显然应该使用read_csv()

以上是关于如何计算所有可能行之间的相关性的主要内容,如果未能解决你的问题,请参考以下文章

sql:计算相关性并将行转换为列

如何计算 Pearson 相关矩阵并仅保留重要值?

1列中2组之间的相关性

如何使用 MapReduce 在 python 中计算两个变量之间的相关性

如何计算两变量的相关系数r?

在 pandas 中,如何在具有匹配行和列的 3 个单独数据帧之间建立相关矩阵?