繁体   English   中英

寻找时间序列的周期

[英]Finding periods of time series

我在 dataframe 中有一个时间序列,我想找到信号“S”显着高然后又低的情况。

所以我想找到3个时间段A,B,C,其中A:(s =平均值)-> B:(s =高-> C:(df [s] =再次平均)。我尝试了以下找到 "S" 的 n 个最大 B 时刻,然后尝试找到满足约束的 B 时刻之前和之后的周期:

B = df.nlargest(3, 'S').index
threshold = 1
A = []
C = []
for b in B:
    A.append(min([i for i in df.index if (i < b) & (df['S'][i] <= df['S'][b] - threshold)], key=lambda x: abs(x - b)))
    C.append(min([i for i in df.index if (i > b) & (df['S'][i] <= df['S'][b] - threshold)], key=lambda x: abs(x - b)))

问题是得到一个ValueError: min() arg is an empty sequence错误,因为并不总是找到 A 和 C 时刻。 我该如何解决这个问题? 我可以使用某种错误处理并仅打印“未找到时刻”吗? 或者也许是更聪明的方法? 我会很感激一些帮助

谢谢

df 的例子:

In [2]: df['S']
Out[2]: Date   Values
2019-01-06    194.021278
2019-02-03    196.034816
2019-03-03    193.071251
2019-03-31    190.647765
2019-04-28    190.791410
2019-05-26    190.465997
2019-06-23    192.097875
2019-07-21    192.704626
2019-08-18    193.757577
2019-09-15    193.480539
2019-10-13    193.800638
2019-11-10    192.289041
2019-12-08    195.755910
2020-01-05    198.654722
2020-02-02    199.804535
2020-03-01    198.191558

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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