【问题标题】:detect significant changes in a data list检测数据列表中的重大变化
【发布时间】:2021-05-24 12:00:52
【问题描述】:

我在 python 中有一个数据列表,表示及时的作业数量。我想检测此数据集中的重大变化。我的意思是,我想检测每次数据值从上一个检查点增加或减少超过特定百分比时。

例如,如果我有 [10,..,10,100,..,100,200,200,...,100,10] 这样的数据。有 4 个重大变化。

检测此问题的理想方法/算法是什么?

【问题讨论】:

    标签: python statistics data-analysis


    【解决方案1】:

    您可以查看当前和下一个列表元素之间的绝对差异,如果差异超过某个阈值,则报告其索引,例如:

    THR = 50
    data = [10,10,100,100,200,200,100,10]
    [(i,abs(x-y)>THR) for i,(x,y) in enumerate(zip(data,data[1:])) if abs(x-y)>THR]
    #[1, 3, 5, 6] - gap after items 1 (10->100), 3 (100->200), etc.
    

    【讨论】:

    【解决方案2】:

    如果数据的方差是常数,则可以使用标准差。如果数据已经存在(不是实时监听),你可以使用 pandas:

    p=10 #instead of measuring difference from previous 1, can measure longer-distance differences (though this may not be exactly what you're asking)
    import pandas as pd
    s = pd.Series(data)
    diffs = s.diff(periods=p)
    std = diffs.std()
    significant_changes = diffs.loc[diffs > std]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      相关资源
      最近更新 更多