Как мы можем отклонить окно, содержащее выброс во время скользящего среднего, используя python? - PullRequest
0 голосов
/ 03 мая 2020

Проблема, с которой я сталкиваюсь, заключается в том, как я могу отклонить окно из 10 строк, если одна или несколько строк состоят из выброса при вычислении скользящего среднего с использованием python pandas?

Для пояснения :

df = df['speed'].rolling(10).mean() 
outlier_lower_bound = 0
outlier_upper_bound = 15

df.max()

Теперь, как мне отклонить / не учитывать среднее значение этого окна за 10 периодов, если оно состоит из выброса?

Конечная цель - получить максимальное скользящее среднее без учета / с учетом окна 10 периода, если оно содержит выбросы Заранее спасибо!

1 Ответ

0 голосов
/ 03 мая 2020

Вы можете исправить проблему в одну строку, например так:

_filter = lambda x: float("inf") if x > outlier_upper_bound or x < outlier_lower_bound else x

df["speed"].apply(_filter).rolling(10).mean().dropna()

Идея моего кода может быть понята в следующих шагах:

  • Я создаю лямбду функция с именем _filter, которая преобразует любое значение за пределами ваших границ в inf.
  • При применении mean к окну с inf в результате будет Nan.
  • Наконец, я отбрасываю все значения Nan, которые будут имитировать c тот же эффект.
...