У меня есть следующий фрейм данных:
Year Month Equipment Weight
2017 1 TennisBall 5
2017 1 Football 4
2017 1 TennisBall 6
2017 1 TennisBall 7
2017 1 TennisBall 300
2017 2 TennisBall 300
2018 2 TennisBall 250
2018 2 Football 5
2018 2 TennisBall 6
2018 2 TennisBall 275
...
В приведенном выше примере для нас нормально отгрузить 300 единиц теннисных мячей только в феврале, сделав таким образом порядка 6 единицвыброс, тогда как в январе обычная сумма составляет ~ 5, что делает любые крупные заказы в этом месяце выбросом.Я хотел бы отбросить выбросы в зависимости от веса в месяц.Есть ли простой способ сделать это?Я знаю, что могу сделать что-то вроде:
df1[np.abs(df1.Weight-df1.Weight.mean()) <= (5*df1.Weight.std())]
, чтобы взять что-нибудь с весом в пределах 5 отклонений от среднего, но это не будет учитывать часть за месяц, где я могу видеть драматическиесдвиги в весе из-за того, что месяц.Спасибо!
Редактировать: Например, желаемый результат будет примерно таким:
Year Month Equipment Weight
2017 1 TennisBall 5
2017 1 Football 4
2017 1 TennisBall 6
2017 1 TennisBall 7
2017 2 TennisBall 300
2018 2 TennisBall 250
2018 2 Football 5
2018 2 TennisBall 275
...
Где в январе был удален выброс в 300 (как в январе это выше нормы)и в феврале выброс 6 был удален (это было бы нормой в январе, но, как это случилось в феврале, это ненормально)