Определите модуль разницы между средними значениями
Необходимо определить модуль разницы между средними тратами женщин и мужчин (трата - отрицательное значение 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 шт):
как-то так:
res = df_3.groupby("gender")["amount"].mean().diff().abs()
NOTE: данное решение не тестировалось по причине отсутсвия в вопросе воспроизводимого примера данных.
PS на будущее - советую оформлять вопросы так, как показано здесь
# несколько баз открыты и сшиты в один датафрейм 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
