我有一个 Pandas 数据框,它有一个七年时间范围内的日期时间索引和 10 种不同 Assets 的价格数据。我想运行 dataframe.corr 函数来评估 Assets 之间的关系,我的问题是我想在特定月份运行 corr 函数。那么所有年份的一月有什么相关性?
根据我一直在阅读的内容,如果我按时间分组,我可能会失去正确的时间进程,这会使相关性分析变得无用。
如何按月对数据框进行分组并保持时间顺序?
最佳答案
使用 df['month'] = df.index.month
从 DatetimeIndex 中提取月份。然后按 month
分组:
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))
产生一个 DataFrame,其前几行如下所示:
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 的列之间的相关性。请注意 该索引是一个 MultiIndex,其第一级是月份,第二级 指的是与关联关联的两个 DataFrame 列之一。
corr
方法忽略索引——它将 DataFrame 的两列视为数组。
所以分组数据在时间上有差距是没有问题的。
关于python - 部分日期的 Pandas DataFrame 相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44946763/