首页 文章

部分日期的Pandas DataFrame相关性

提问于
浏览
2

我有一个Pandas数据框,它具有七年期限的DateTime指数和10种不同资产的价格数据 . 我想运行dataframe.corr函数来评估资产之间的关系,我的问题是我想在特定月份运行corr函数 . 所以在所有年份的1月份,相关性是什么?

从我读过的内容来看,如果我分组的时候我可能会失去正确的时间进度,这会使相关性分析变得毫无用处 .

如何按月对数据框进行分组并保持时间顺序?

1 回答

  • 1

    使用 df['month'] = df.index.month 从DatetimeIndex中提取月份 . 然后groupby 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的两列视为数组 . 因此,具有时间差的分组数据没有问题 .

相关问题