Подсчет периодических событий временного ряда в Python - PullRequest
0 голосов
/ 02 марта 2020

Задача состоит в подсчете событий в прерывистом временном ряду, который имеет df, как показано ниже:

           Temperature top_lim  bottom_lim
Timestamp               
2015-10-30  26.479969   40     25
2015-10-31  25.500000   40     25
2015-11-01  25.500000   40     25
2015-11-02  27.916858   40     25

Код

df.plot( y='Temperature', figsize=(16, 10),) 

plt.axhline(y=40, color='r', linestyle='-')
plt.axhline(y=25, color='b', linestyle='-')

df['top_lim'] = 40
df['bottom_lim'] = 25

plt.fill_between(df.index, df['bottom_lim'], df['Temperature'],
                where=(df['Temperature'] >= df['bottom_lim'])&(df['Temperature'] <= df['top_lim']),
                facecolor='orange', alpha=0.3)

mask = (df['Temperature'] <= df['top_lim'])&(df['Temperature'] >= df['bottom_lim'])
plt.scatter(df.index[mask], df['Temperature'][mask], marker='.', color='black')

cumulated_time = df.index[mask].diff().sum()
plt.title(f'Cumulative time in range = {cumulated_time}')
plt.show()

создает график, подобный этому enter image description here

Как отредактировать код для вычисления, для каждого всплеска :

общее количество секунд, для которого Temperature> 40, который предпочтительно дает таблицу выглядит примерно так:

           Temperature top_lim  bottom_lim 49duration
Timestamp               
2015-10-30  26.479969   40     25           5
2015-10-31  25.500000   40     25           3
2015-11-01  25.500000   40     25           0
2015-11-02  27.916858   40     25           4

, где 49duration представляет количество секунд, которое Temperature> 49 на пике?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...