我有一个DataFrame dff
,它的形状代表5个项目和4天。我创建了一个EWM ewmm
并获得了EW移动平均线。
当涉及到相关性和协方差时,我预期的是5×5形状的矩阵,但结果形状为5×4×4。
我怎样才能做对?
In[59]: dff
Out[59]:
0 1 2 3
0 1 2 3 4
1 4 3 2 1
2 3 1 4 1
3 5 9 2 6
4 1 2 3 4
In[60]: ewmm = dff.ewm(span=2, axis=1)
In[61]: ewmm.mean()
Out[61]:
0 1 2 3
0 1.0 1.75 2.615385 3.550
1 4.0 3.25 2.384615 1.450
2 3.0 1.50 3.230769 1.725
3 5.0 8.00 3.846154 5.300
4 1.0 1.75 2.615385 3.550
In[62]: ewmm.corr()
Out[62]:
<class 'pandas.core.panel.Panel'>
Dimensions: 5 (items) x 4 (major_axis) x 4 (minor_axis)
Items axis: 0 to 4
Major_axis axis: 0 to 3
Minor_axis axis: 0 to 3
In[63]: ewmm.cov()
Out[63]:
<class 'pandas.core.panel.Panel'>
Dimensions: 5 (items) x 4 (major_axis) x 4 (minor_axis)
Items axis: 0 to 4
Major_axis axis: 0 to 3
Minor_axis axis: 0 to 3
答案 0 :(得分:0)
我通过处理转置ddf.T
得到了正确的答案。形状(4,5)代表4天和5个项目。
我认为在调用axis
时,大熊猫不会考虑ewmm.cov()/ewmm.corr()
。
In[73]: dff = dff.T
In[74]: dff
Out[74]:
0 1 2 3 4
0 1 4 3 5 1
1 2 3 1 9 2
2 3 2 4 2 3
3 4 1 1 6 4
In[75]: ewmm = dff.ewm(span=2)
In[76]: ewmm.mean()
Out[76]:
0 1 2 3 4
0 1.000000 4.000000 3.000000 5.000000 1.000000
1 1.750000 3.250000 1.500000 8.000000 1.750000
2 2.615385 2.384615 3.230769 3.846154 2.615385
3 3.550000 1.450000 1.725000 5.300000 3.550000
In[77]: ewmm.corr()
Out[77]:
<class 'pandas.core.panel.Panel'>
Dimensions: 4 (items) x 5 (major_axis) x 5 (minor_axis)
Items axis: 0 to 3
Major_axis axis: 0 to 4
Minor_axis axis: 0 to 4
In[78]: ewmm.corr()[3]
Out[78]:
0 1 2 3 4
0 1.000000 -1.000000 -0.532986 0.145400 1.000000
1 -1.000000 1.000000 0.532986 -0.145400 -1.000000
2 -0.532986 0.532986 1.000000 -0.908437 -0.532986
3 0.145400 -0.145400 -0.908437 1.000000 0.145400
4 1.000000 -1.000000 -0.532986 0.145400 1.000000