2017-02-10 28 views
0

enter image description here Данные по оси x содержат время в dd-mm-yy hr: min: ss с интервалом 15 минут, например. 01/01/2010 00:00:00 ... 01/01/2010 00:15:00 и т. Д. Ось y содержит соответствующие сигналы. Я хотел бы вычислить область выше пороговых значений (в данном случае> 30) из графика python, а также соответствующее значение оси 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] 

ответ

2

Как ваш код теперь, df['X1']>30 даст вам булево массив. Вы можете использовать это, чтобы выбрать интересующие вас значения.

Поскольку ваши данные равномерно распределены, самая простая оценка области под кривой будет просто суммой всех значений выше вашего порогового значения времени.

area = (df[df['X1']>30] - 30).sum() * 15

Я вычитают 30, потому что основано на вашем графике, вы хотите область выше порога, а не общей площади. Если вам интересно, scipy имеет ряд методов численной интеграции.

+0

Отлично .. спасибо. Это поможет. – saltymisty73