我们如何使用 python 拒绝滚动平均期间包含异常值的 window?
How can we reject a window containing an outlier during rolling average using python?
我面临的问题是,在使用 python pandas?
澄清一下:
df = df['speed'].rolling(10).mean()
outlier_lower_bound = 0
outlier_upper_bound = 15
df.max()
现在如何拒绝/不考虑这 10 个周期的平均值 window 如果它包含异常值?
最终目标是在不考虑/考虑 10 个周期的 window 的情况下获得最大移动平均线(如果它包含异常值)提前致谢!
您只需一行即可解决您的问题:
_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
的 lambda 函数,它将您边界之外的任何值转换为 inf
。
- 在包含
inf
的 window 上应用 mean
时,结果将是 Nan
。
- 最后,我删除所有
Nan
值,这将模拟相同的效果。
我面临的问题是,在使用 python pandas?
澄清一下:
df = df['speed'].rolling(10).mean()
outlier_lower_bound = 0
outlier_upper_bound = 15
df.max()
现在如何拒绝/不考虑这 10 个周期的平均值 window 如果它包含异常值?
最终目标是在不考虑/考虑 10 个周期的 window 的情况下获得最大移动平均线(如果它包含异常值)提前致谢!
您只需一行即可解决您的问题:
_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
的 lambda 函数,它将您边界之外的任何值转换为inf
。 - 在包含
inf
的 window 上应用mean
时,结果将是Nan
。 - 最后,我删除所有
Nan
值,这将模拟相同的效果。