Найти корреляцию между каждой группой строк для нескольких переменных - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть месячные данные по некоторым магазинам, и я хочу найти корреляцию между каждым магазином во фрейме данных. Данные выглядят так:

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 на каждый месяц, и я хочу выяснить корреляцию между каждым магазином для обеих переменных, т.е. доход и стоимость. Таким образом, выходные данные для переменной доход должны выглядеть примерно так:

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

Точно так же еще одна современная матрица / датафрейм для стоимость переменная.

1 Ответ

0 голосов
/ 12 февраля 2020

Измените ваши данные таким образом, чтобы ваши магазины были столбцами, а месяцы - индексом строк.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...