Помогите реализовать метод отфильтровывания слишком больших значений числового ряда (это котировки акций). Пример значений 2018-09-09, 2018-09-17
value
timestamp
2018-09-01 0.000206
2018-09-02 0.000217
2018-09-03 0.000212
2018-09-04 0.000209
2018-09-05 0.000212
2018-09-06 0.000235
2018-09-07 0.000267
2018-09-08 0.000271
2018-09-09 0.050000
2018-09-10 0.000277
2018-09-11 0.000252
2018-09-12 0.000243
2018-09-13 0.000261
2018-09-14 0.000291
2018-09-15 0.000303
2018-09-16 0.000292
2018-09-17 0.080000
2018-09-18 0.000352
2018-09-19 0.000389
2018-09-20 0.000359
2018-09-21 0.000350
2018-09-22 0.000350
2018-09-23 0.000350
2018-09-24 0.000335
2018-09-25 0.000341
2018-09-26 0.000355
2018-09-27 0.000358
2018-09-28 0.000357
2018-09-29 0.000352
2018-09-30 0.000333
import pandas as pd
df = pd.read_csv("254.csv")
df["timestamp"] = pd.to_datetime(df["timestamp"])
df.set_index('timestamp', inplace=True)
df["data_pct"] = df["value"].pct_change(1)
df["data_pct_norm"] = (df["data_pct"] - df["data_pct"].mean())/df["data_pct"].std()
df["data_pct_norm"].fillna(0, inplace=True)
index = df["data_pct_norm"].between(-7, 7)
df = df[index]
data_res = df["value"].resample('24H')
data_int = data_res.interpolate(method='linear')
data_int.to_csv("254_cleaned.csv")
Проблемы с существующим кодом: он не может фильтровать два подряд идущих аномальных значения (так как ищет относительное изменение значения в ряде) и иногда отфильтровывает реальные пики в данных. Посоветуйте алгоритмы, альтернативные подходы к подобной задаче (можно использовать scipy, что-либо еще)