我的x轴数据包含dd-mm-yy hr:min:ss的时间,间隔为15分钟,例如01/01/2010 00:00:00 ... 01/01/2010 00:15:00等.Y轴包含相应的信号。我想从python图中计算高于阈值的区域(在这种情况下> 30),并且还以秒为单位计算相应的x轴值。参见图中的细节。我试图用以下代码计算。但不要认为它有效。你能建议我吗?谢谢。阈值代码如下:
df['area']= (df['X1']>30)
df['area'].values
#df['area'].sum
并且输出有真假数组。
[![array(\[False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, False, False, False, False, False, False,
True, False, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, False, False, True,
False, False, False, False, False, False\], dtype=bool)][1]][1]
答案 0 :(得分:2)
正如您的代码现在,df['X1']>30
将为您提供一个布尔数组。您可以使用它来选择您感兴趣的值。
由于您的数据均匀分布,因此曲线下面积最简单的估算值就是高于阈值的所有值乘以时间间隔的总和。
area = (df[df['X1']>30] - 30).sum() * 15
我减去30,因为根据您的图表,您希望区域高于阈值,而不是总面积。如果您有兴趣,scipy有许多数值积分方法。