【发布时间】:2020-10-27 02:41:04
【问题描述】:
我有一个数据框,其中每一列代表一个地理点,每一行代表一天中的一分钟。每个单元格的值是 CFS 中该点的水流。下面是这些时间流序列之一的图表。
基本上,我需要计算白天每个位置的最大流量的绝对值,在这种情况下是 187 cfs 的驼峰。但是,存在不稳定性,因此 DF.abs().max() 返回 1197 cfs。我需要以某种方式删除计算中的异常值。如您所见,异常值没有模式,但如果您查看图表,没有 2 个连续时间点的流量变化不应超过 x%。我应该提一下,这些点有 15K,所以最快的解决方案就是最好的。
任何人都知道我如何在 python 中完成这项工作,或者至少知道我想要做什么的统计词?谢谢!
【问题讨论】:
-
不,所有这些答案都依赖于 Z 分数、标准差或 IQR。如果您查看上图,虽然真正的最大值为 187,但存在一个值为 200、另一个值为 150 等的异常值,因此任何灵敏度截止都不起作用。解决方案需要考虑点与其相邻点的关系。
-
我确信有一些我从未听说过的统计词,一些 scipy 函数会解决它。
-
你能分享样本数据并手动注释哪些点是异常值吗?我可以在图表上看到远离主线的点组。你认为它是一组异常值吗?
-
OP,如果你仔细看,这是一个非常有趣且有些微妙的问题。本质上,您需要做的是建立一个模型,了解当传感器正常工作时数据的外观,然后使用它以一种或多种方式将点分类为正常或奇怪。 (当您确实将点分类为奇怪时,我的建议是输出一份关于它们的单独报告——您发现奇怪值的时间戳和值,以及有多少。)首先您需要理清如何建模 OK/奇怪的点,然后想想计算。试试关于模型的 stats.stackexchange.com。
标签: python pandas scipy statistics