Выбор столбцов / осей для корреляции из Pandas df - PullRequest
0 голосов
/ 06 мая 2019

У меня есть пандас, как показано ниже.Я хотел бы построить корреляционную матрицу, которая устанавливает отношение между владением продуктом и прибылью / затратами / оборотами для ряда записей о клиентах.

    prod_owned_a    prod_owned_b    profit      cost    rev
0   1               0               100         75      175
1   0               1               125         100     225
2   1               0               100         75      175
3   1               1               225         175     400
4   0               1               125         100     225

В идеале, матрица должна иметь все prod_owned вдоль одной оси сприбыль / стоимость / оборот по другому.Я хотел бы избежать включения корреляции между prod_owned_a и prod_owned_b в матрицу корреляции.

Вопрос: Как выбрать конкретные столбцы для каждой оси?Спасибо!

Ответы [ 2 ]

1 голос
/ 06 мая 2019

Пока порядок столбцов не меняется, вы можете использовать нарезку:

df.corr().loc[:'prod_owned_b', 'profit':]
#                profit      cost       rev
#prod_owned_a  0.176090  0.111111  0.147442
#prod_owned_b  0.616316  0.666667  0.638915

Более надежное решение находит все столбцы "prod_ *":

prod_cols = df.columns.str.match('prod_')
df.corr().loc[prod_cols, ~prod_cols]
#                profit      cost       rev
#prod_owned_a  0.176090  0.111111  0.147442
#prod_owned_b  0.616316  0.666667  0.638915
0 голосов
/ 06 мая 2019

Не очень оптимизировано, но все же;

df.corr().loc[['prod_owned_a', 'prod_owned_b'], ['profit', 'cost', 'rev']]

...