Source code for croissance.estimation.outliers

import pandas

from croissance.estimation.util import with_overhangs


[docs] def remove_outliers(series, window=30, std=2): """ Returns a tuple containing a series with points removed where the distance of the median exceeds ``std`` standard deviations within a rolling window, and a series containing the removed outliers. """ if len(series.values) < 10: return series, pandas.Series([], dtype="float64") values = with_overhangs(series.values, window) windows = values.rolling(window=window, center=True) outliers = abs(values - windows.median()) >= windows.std() * std outlier_mask = outliers[window:-window].values return series[~outlier_mask], series[outlier_mask]