Упрощенно, моя проблема заключается в следующем. У меня есть 3 разных столбца и 6 строк:
A B C
g 1 2
h 2 1
j 3 3
h 3 3
g 4 3
j 5 4
Первое, что я хотел сделать, это вычислить среднее значение B, медиану и режим с учетом группы A. Итак, я сделал это, и пока все хорошо:
aggregations_diag = ('mean', 'median', lambda x: x.mode().iloc[0])
groupy_diag = df.groupby('A', as_index=False)['B'].agg(aggregations_diag)
Затем я хотел создать новый столбец, представляющий вычисление средней абсолютной ошибки для каждой из строк между B и средним значением * 1013. *, учитывая, что среднее значение варьируется для каждой группы.
И так:
def absolute_error_diag(x):
stats = ['mean', 'median', 'mode']
avg = groupy_diag.loc[x['A'], stats]
return (avg - x['B'])
# Columns for the absolute error of each row
columns_names_diag = ['ae_diag_mean','ae_diag_median','ae_diag_mode']
df[columns_names_diag] = df.apply(absolute_error_diag, axis=1)
[MAE_diag_mean, MAE_diag_median, MAE_diag_mode] =
df[columns_names_diag].sum()/len(df['ae_diag_mean'])
Однако теперь я хочу посмотреть, какие группы А имеют наибольшие ошибки в порядке признать, что группы, которые имеют самые большие ошибки. Итак, есть какой-нибудь простой способ иметь «таблицу» со всеми ошибками, связанными с соответствующим кодом (столбец A)? От самой большой ошибки до самой маленькой?