每个对组之间的pandas相关矩阵

sei*_*day 4 python correlation pandas

我有一个像这样的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
Run Code Online (Sandbox Code Playgroud)

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

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))
Run Code Online (Sandbox Code Playgroud)

groups是这样的:

sym
A    [nan,1.00,2.00,...]
B    [nan,1.00,2.00,...]
C    [nan,1.00,2.00,...]
Run Code Online (Sandbox Code Playgroud)

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

AA,AB,AC,BB,BA,BC,CA,CB,CC
Run Code Online (Sandbox Code Playgroud)

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

cph*_*wis 9

有了df如上,使数据透视表:

dfp = df.pivot('date','sym')
print(dfp)
Run Code Online (Sandbox Code Playgroud)
           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
Run Code Online (Sandbox Code Playgroud)

大熊猫将计算成对系数:

print(dfp.corr())
Run Code Online (Sandbox Code Playgroud)
              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
Run Code Online (Sandbox Code Playgroud)

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

import seaborn as sns
sns.corrplot(dfp, annot=True)
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述