Python 计算类型之间的相关矩阵

Python 计算类型之间的相关矩阵,python,pandas,correlation,Python,Pandas,Correlation,我有数据框df,它包括以下3列(单独的选项卡): 输出将是如下所示的相关矩阵: pen pencil ruler pen C1 C2 C3 pencil C4 C5 C6 ruler C7 C8 C9 我尝试了.corr(),但它在df的结构上无法正常工作 注:C1是笔与笔之间的相关值,C2是笔与笔之间的相关值,依此类推 有什么帮助吗?IIUC,您可以: res = df.groupb

我有数据框
df
,它包括以下3列(单独的选项卡):

输出将是如下所示的相关矩阵:

      pen    pencil    ruler

pen    C1      C2        C3

pencil C4      C5        C6

ruler  C7      C8        C9
我尝试了
.corr()
,但它在df的结构上无法正常工作

注:C1是笔与笔之间的相关值,C2是笔与笔之间的相关值,依此类推

有什么帮助吗?

IIUC,您可以:

res = df.groupby('types').mean().T.corr()
输出

types   pen  pencil  ruler
types                     
pen     1.0     1.0    1.0
pencil  1.0     1.0    1.0
ruler   1.0     1.0    1.0
types        pen    pencil     ruler
types                               
pen     1.000000  0.145973 -0.021464
pencil  0.145973  1.000000  0.022724
ruler  -0.021464  0.022724  1.000000
您可以更改关联方法以满足您的需要,例如:

import numpy as np
res = df.groupby('types').mean().T.corr(method=np.dot)
print(res)
输出

types   pen  pencil  ruler
types                     
pen     1.0     1.0    1.0
pencil  1.0     1.0    1.0
ruler   1.0     1.0    1.0
types        pen    pencil     ruler
types                               
pen     1.000000  0.145973 -0.021464
pencil  0.145973  1.000000  0.022724
ruler  -0.021464  0.022724  1.000000
默认情况下,方法将是pearson相关性,来自on方法:

方法{'pearson','kendall','spearman'}或 相关性:

皮尔逊:标准相关系数

肯德尔:肯德尔陶相关系数

斯皮尔曼:斯皮尔曼等级相关性

可调用:输入两个1d数组并返回一个浮点值即可调用。 请注意,从corr返回的矩阵沿 对角线和将是对称的,无论可调用对象的行为如何

0.24.0版中的新版本


C1的值应该是多少?它是pen-pen之间的相关值,C2是pen-pencil之间的相关值,等等@Danimesjot这里有多个pen值,你想如何处理?是的,但是你有几个pencil列。。。笔柱是指不同的X和Y,对吗?我不完全确定,处理这个问题最好的办法是什么?对每种类型的X和Y取平均值?因此,在最后,我们只有3行@ombk,事实上,我会走这条路。按类型和平均等级分组!但我有一个问题,在第一种情况下,什么都不涉及相关性;为什么所有结果的相关值都是1?@LamaMo更新了答案。