Определите модуль разницы между средними значениями

Необходимо определить модуль разницы между средними тратами женщин и мужчин (трата - отрицательное значение amount). (*)

Пояснения: (*) Если в результате для мужчин получились значения [-1,-3,-5], а для женщин [-1,-2,-3], то модуль разницы между средними арифметическими -3 и -2 будет равен 1.

(**) Обратите внимание, что для вычисления модуля разности точных знаний о том, какой класc относится к мужчинам, а какой - к женщинам, пока не требуется.

(***) Округление не нужно производить отдельно по средним тратам женщин и мужчин, а только в самом конце, когда получите значение модуля разницы трат.

Правильно ли я понял, что сначала я определяю траты (т.е. значения меньше 0) у мужчин и женщин потом нахожу среднее значения и затем считаю модуль этих средних?

Как посчитать модуль средних?

Фрейм данных такой:

введите сюда описание изображения

Мое решение:

 import pandas as pd

 import numpy as np

 import matplotlib.pyplot as plt

 import seaborn as sns

 %matplotlib inline

 df_3 = pd.read_csv(r'C:\ееее.csv',
       sep=',')

 groups=df_3.groupby(['gender']) # отфильтровал по полу

 groups.ngroups # сколько видов по полу

 gg_1 = groups.get_group(0) # отфильтровал по полу 0

 gg_1_traty = gg_1.loc[(gg_1['amount'] < 0)] # нашел траты со знаком -

 gg_1_traty_sred = gg_1_traty.amount.mean() # средние траты для пола 0

Тоже самое для второго пола.

А дальше что, не понимаю как посчитать модуль среднего значения трат мужчин и женщин.


Ответы (2 шт):

Автор решения: MaxU

как-то так:

res = df_3.groupby("gender")["amount"].mean().diff().abs()

NOTE: данное решение не тестировалось по причине отсутсвия в вопросе воспроизводимого примера данных.

PS на будущее - советую оформлять вопросы так, как показано здесь

→ Ссылка
Автор решения: NSh
# несколько баз открыты и сшиты  в один датафрейм task1

task1_minus = task1[task1.amount <0]   
# отбираем только траты , они с минусом
task1_minus.amount = task1_minus.amount*(-1)   
# меняем их знак, чтоб модуль не использовать
task1_minus_11 = task1_minus[task1_minus.gender == 1.0] 
# выборка по мужчинам
task1_minus_01 = task1_minus[task1_minus.gender == 0.0] 
# выборка по женщинам
rezz0 = round((task1_minus_11.amount.mean() -task1_minus_01.amount.mean()),2)  
# делаем разницу и округляем
rezz0
→ Ссылка