我有一个Pandas数据框,它具有七年期限的DateTime指数和10种不同资产的价格数据。我想运行dataframe.corr函数来评估资产之间的关系,我的问题是我想在特定月份运行corr函数。所以在所有年份的1月份,相关性是什么?
从我读过的内容来看,如果我分组的时候我可能会失去正确的时间进度,这会使相关性分析失效。
如何按月对数据框进行分组并保持时间顺序?
答案 0 :(得分:1)
使用month
从DatetimeIndex中提取月份。然后groupby import numpy as np
import pandas as pd
N = 100
index = pd.date_range('2000-1-1', periods=N, freq='B')
df = pd.DataFrame(np.random.random((N,3)), index=index)
df['month'] = df.index.month
result = df.groupby('month').corr()
print(result.head(9))
:
0 1 2
month
1 0 1.000000 -0.000325 -0.208282
1 -0.000325 1.000000 -0.236316
2 -0.208282 -0.236316 1.000000
2 0 1.000000 0.056222 -0.010197
1 0.056222 1.000000 -0.140247
2 -0.010197 -0.140247 1.000000
3 0 1.000000 -0.064615 -0.111025
1 -0.064615 1.000000 -0.100798
2 -0.111025 -0.100798 1.000000
生成一个DataFrame,其前几行如下所示:
corr
这显示了DataFrame列之间的相关性。请注意 索引是MultiIndex,其第一级是月,第二级是第二级 指与关联相关联的两个DataFrame列之一。
{{1}}方法忽略索引 - 它将DataFrame的两列视为数组。 因此,分组数据在时间上存在差距是没有问题的。