简体   繁体   中英

Any existing methods to find a drop in a noisy time series?

I have a time series (array of values) and I would like to find the starting points where a long drop in values begins (at least X consecutive values going down). For example:

Having a list of values

[1,2,3,4,3,4,5,4,3,4,5,4,3,2,1,2,3,2,3,4,3,4,5,6,7,8]

I would like to find a drop of at least 5 consecutive values. So in this case I would find the segment 5,4,3,2,1 .

However, in a real scenario, there is noise in the data, so the actual drop includes a lot of little ups and downs.

I could write an algorithm for this. But I was wondering whether there is an existing library or standard signal processing method for this type of analysis.

You can do this pretty easily with pandas (which I know you have). Convert your list to a series, and then perform a groupby + count to find consecutively declining values:

v = pd.Series([...])
v[v.groupby(v.diff().gt(0).cumsum()).transform('size').ge(5)]

10    5
11    4
12    3
13    2
14    1
dtype: int64

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM