【问题标题】:pandas correlation matrix between each pair groupby item每对分组项之间的熊猫相关矩阵
【发布时间】:2015-06-20 07:02:12
【问题描述】:

我有一个这样的 csv 文件:

date,sym,close
2014.01.01,A,10
2014.01.02,A,11
2014.01.03,A,12
2014.01.04,A,13
2014.01.01,B,20
2014.01.02,B,22
2014.01.03,B,23
2014.01.01,C,33
2014.01.02,C,32
2014.01.03,C,31

然后,我通过read_csv 函数得到一个名为df 的日期框

import numpy as np
import pandas as pd
df=pd.read_csv('daily.csv',index_col=[0])
groups=df.groupby('sym')[['close']].apply(lambda x:func(x['close'].values))

groups 看起来像这样:

sym
A    [nan,1.00,2.00,...]
B    [nan,1.00,2.00,...]
C    [nan,1.00,2.00,...]

如何计算每对sym之间的相关性?

AA,AB,AC,BB,BA,BC,CA,CB,CC

顺便说一句,每个符号的项目编号可能相同。

【问题讨论】:

  • 听起来你只想要 numpy corrcoef()。如果这还不够,还可以将一个小型示例数据集(具有不同数量的项目)与您的代码一起发布。
  • @JohnE 我添加了一个示例数据集:)
  • sym 的个数约为 20。
  • 您的样本数据可能需要修改为每个“符号”具有不同的日期(例如 2014.01.01,A,10, 2014.01.02,A,10, 2014.01.03,A,10 )
  • @Alexander 你是对的。我更改了日期。

标签: python pandas correlation


【解决方案1】:

使用上面的df,制作一个数据透视表:

dfp = df.pivot('date','sym')
print(dfp)
           close        
sym            A   B   C
date                    
2014-01-01    10  20  33
2014-01-02    11  22  32
2014-01-03    12  23  31
2014-01-04    13 NaN  30

pandas 将计算成对系数:

print(dfp.corr())
              close                    
sym               A         B         C
      sym                              
close A    1.000000  0.981981 -1.000000
      B    0.981981  1.000000 -0.981981
      C   -1.000000 -0.981981  1.000000

但如果你想美化它,请查看seaborn

import seaborn as sns
sns.corrplot(dfp, annot=True)

结果:

【讨论】:

    【解决方案2】:

    得到groups后:

    sym
    A    [nan,1.00,2.00,...]
    B    [nan,1.00,2.00,...]
    C    [nan,1.00,2.00,...]
    

    我创建了一个 DataFrame df2

    df2=DataFrame()
    df2['A']=groups['A']
    df2['B']=groups['B']
    df2['C']=groups['C']
    
    df2.corr()
    

    这种方法可以通过组的数据得到相关性。然而,并不完美。 如何将组转换为这样的 DataFrame?组的循环键?我需要继续尝试。

    【讨论】:

      猜你喜欢
      • 2016-10-29
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多