【问题标题】:Change point detection in pythonpython中的变化点检测
【发布时间】:2016-01-25 12:30:36
【问题描述】:

我有一个 pandas DataFrame,其中一列包含以下元素:

[2,2.5,3,2,2.6,10,10.3,10,10.1,10.3,10], 

是否有 python 函数可以检测该列表中从 2.6 到 10 的突然变化?我读了一点,R 可以做到这一点。 python中有没有类似的功能?

【问题讨论】:

  • 您能否澄清一下您期望得到什么以及为什么?例如,为什么不从 2 到 2.6?

标签: python python-2.7 pandas


【解决方案1】:

IIUC 您可以使用pct_change 来查找邻居之间的差异,然后与您的限制进行比较(无论是什么):

s = pd.Series([2,2.5,3,2,2.6,10,10.3,10,10.1,10.3,10])

In [105]: s.pct_change()
Out[105]:
0          NaN
1     0.250000
2     0.200000
3    -0.333333
4     0.300000
5     2.846154
6     0.030000
7    -0.029126
8     0.010000
9     0.019802
10   -0.029126
dtype: float64

In [107]: s[s.pct_change() > 1]
Out[107]:
5    10
dtype: float64

In [117]: s[s.pct_change() > 1].index.tolist()
Out[117]: [5]    

【讨论】:

    猜你喜欢
    • 2022-12-12
    • 2014-05-13
    • 1970-01-01
    • 2022-08-22
    • 2012-05-27
    • 2013-02-07
    • 2011-11-24
    • 1970-01-01
    • 2022-01-07
    相关资源
    最近更新 更多