Динамическое обнаружение выбросов с помощью окна в Pandas - PullRequest
0 голосов
/ 07 мая 2018

Я хочу реализовать обнаружение выбросов, которое будет использовать окно, чтобы проверить, является ли следующий элемент выбросом или нет. Допустим, мы используем окно длины 3 на pd. Вот как: [0,1,2,3,4]. Я бы вычислил медиану и безумность (или среднее значение и стандартное отклонение) на [0,1,2] и проверил, является ли 3 выбросом.
Я реализовал решение для цикла, но оно очень медленное.

1 Ответ

0 голосов
/ 07 мая 2018

Скажем, вы начинаете с

s = pd.Series([1, 2, 1, 4, 2000, 2])

Затем, используя rolling, следующее покажет вам, что 5-й элемент находится на расстоянии 200 от медианы окна длины-3:

(s - s.rolling(3).median()).abs() > 200
0    False
1    False
2    False
3    False
4     True
5    False
dtype: bool

Он векторизован и поэтому должен быть намного быстрее, чем for loop.

...