【问题标题】:Correlation between columns of different dataframes不同数据框的列之间的相关性
【发布时间】:2020-01-16 13:39:50
【问题描述】:

我有很多数据框。它们都共享相同的列结构"date", "open_position_profit", "more columns..."

    date    open_position_profit col2   col3
0   2008-04-01  -260.0  1   290.0
1   2008-04-02  -340.0  1   -60.0
2   2008-04-03  100.0   1   40.0
3   2008-04-04  180.0   1   -90.0
4   2008-04-05  0.0 0   0.0 0.0 1

尽管"date" 存在于所有数据框中,但它们的计数可能相同也可能不同(某些日期可能在一个数据框中,但不在另一个数据框中)。

我想计算所有这些数据帧的"open_position_profit" 列的相关矩阵。

我试过了

dfs = [df1[["date", "open_position_profit"]], df2[["date", "open_position_profit"]], ...]
pd.concat(dfs).groupby('date', as_index=False).corr()

但这给了我每个单元格的一系列相关性:

                           open_position_profit
0    open_position_profit                   1.0
1    open_position_profit                   1.0
2    open_position_profit                   1.0
3    open_position_profit                   1.0
4    open_position_profit                   NaN

我想要整个时间序列的相关性,而不是每个单元格。我该怎么做?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    如果我正确理解您的意图,则有必要先进行外部连接。以下代码通过date 键进行外部连接。缺失值可以用NaN表示。

    df = pd.merge(df1, df2, on='date', how='outer')
             date  open_position_profit_x  open_position_profit_y  ... ...
    0  2019-01-01       ... 
    1  2019-01-02       ...
    2  2019-01-03       ...
    3  2019-01-04       ...
    

    然后你可以计算与新DataFrame的相关性。

    df.corr()
                             open_position_profit_x  open_position_profit_y  ... ...
    open_position_profit_x   1.000000                0.866025        
    open_position_profit_y   0.866025                1.000000  
    ...                      1.000000                1.000000  
    ...                      1.000000                1.000000 
    

    见:pd.merge

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      • 2018-01-11
      • 2017-06-08
      • 1970-01-01
      • 2021-03-15
      • 2014-08-03
      • 1970-01-01
      相关资源
      最近更新 更多