Могу ли я применить Groupby на Pandas кадре данных и вычислить среднее значение по всем столбцам? - PullRequest
2 голосов
/ 24 апреля 2020

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

Category Col1 Col2 Col3 Col4 Col5

Footwear    35   55   67   87   94

Apparels    56   65   54   84   77

Footwear    87   85   56   95   35

Handbags    83   62   724  51   62

Handbags    61   512  21   58   78

Apparels 50   62   172  77   5

Теперь я хочу найти среднее значение и стандартное отклонение для уникальных категорий, но не для разных столбцов в отдельности, а одно среднее значение и один стандарт для каждой категории. Поэтому я хочу вывод, подобный следующему:

Category mean stdev

Footwear xxx   aaa

Apparels yyy   bbb

Handbags zzz   ccc

Я не могу просто вычислить среднее значение и стандартное отклонение сначала по столбцам, используя функцию среднего с axis = 1, а затем Groupby для категорий. Это дало бы неверные результаты.

Поэтому моя дилемма в том, что я хочу выполнять групповую работу, одновременно агрегируя по строкам и столбцам.

У меня такое ощущение, что пользовательский функция могла бы сделать это, применяя его через агрегацию лямбда вместе с Groupby. Но я не мог этого сделать. Я даже на правильном пути? Спасибо!

1 Ответ

2 голосов
/ 24 апреля 2020

IIU C, с использованием melt и groupby с agg

df1 = pd.melt(df,id_vars='Category').groupby('Category').agg(mean=('value','mean'),
                                                             std=('value','std'))

print(df1)

           mean         std
Category                   
Apparels   70.2   41.983595
Footwear   69.6   23.291391
Handbags  171.2  241.295946
...