【问题标题】:Find correlation between each group of rows for multiple variables查找多个变量的每组行之间的相关性
【发布时间】:2020-05-28 06:30:58
【问题描述】:

我有一些商店的月度数据,我想在数据框中找到每个商店之间的相关性。数据如下所示:

sample_df = pd.DataFrame({'Shop': [1,1,1,2,2,2,3,3,3],'Month': [1,2,3,1,2,3,1,2,3],'Revenue':[10,20,30,20,40,80,10,40,90],'Cost':[6,14,21,10,20,34,7,26,78]})


   Shop Month Revenue Cost
0   1   1     10       6
1   1   2     20       14
2   1   3     30       21
3   2   1     20       10
4   2   2     40       20
5   2   3     80       34
6   3   1     10       7
7   3   2     40       26
8   3   3     90       78

正如您所看到的,对于每家商店,我有 3 个数据点,每个月有 1 个数据点,我想找出每家商店之间的相关性,即收入和成本这两个变量。所以变量 revenue 的输出应该是这样的:

        Shop1 .  Shop2  Shop3
Shop1 .  1 .      .6 .   .8
Shop2 .  .6 .      1 .   .7
Shop3 .  .8       .7 .    1

成本变量的类似矩阵/数据框。

【问题讨论】:

  • 这些相关性是刚刚建立的吗?我似乎得到了不同的数字
  • 是的,他们是编造的

标签: python pandas dataframe statistics correlation


【解决方案1】:

重塑您的数据,使您的商店成为列,月份成为行索引。

df = df.set_index(['Shop', 'Month']).unstack('Shop') 

      Revenue         Cost        
Shop        1   2   3    1   2   3
Month                             
1          10  20  10    6  10   7
2          20  40  40   14  20  26
3          30  80  90   21  34  78

现在您可以使用xs 选择您想要的级别并进行相关性:

df.xs('Revenue', axis=1).corr()

Shop         1         2         3
Shop                              
1     1.000000  0.981981  0.989743
2     0.981981  1.000000  0.998906
3     0.989743  0.998906  1.000000

【讨论】:

    猜你喜欢
    • 2015-06-12
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 2020-07-03
    • 1970-01-01
    • 2022-11-20
    • 2019-02-27
    相关资源
    最近更新 更多