У меня есть временной ряд с нерегулярной частотой образцов. Чтобы получить полезные данные из этого, мне нужно найти 10-минутные периоды с приблизительно равномерно распределенными образцами (это я определил среднюю временную шкалу между двумя образцами меньше 20 с).Pandas group время в периоды, начинающиеся в разное время
Пример данных: (Ради этого примера, я сделать его 10s интервалы с средн 2s дельт.)
| timestamp | speed | | 2010-01-01 09:20:12 | 10 | | 2010-01-01 09:20:14 | 14 | | 2010-01-01 09:20:16 | 12 | | 2010-01-01 09:20:27 | 18 | | 2010-01-01 09:20:28 | 19 | | 2010-01-01 09:20:29 | 19 |
Результат Я надеюсь на это группировка, как следует. Обратите внимание, что вторая группа не включается, потому что образцы сгруппированы вместе в конце периода 10 секунд (27, 28, 29), что означает неявный дополнительный промежуток времени в 7 с, который составляет среднюю дельту 3s.
| timestamp | avg | std | std_over_avg | | 2010-01-01 09:20:10 | 12 | 1.63 | 0.136 |
EDIT: Я думаю, что я комбинируя несколько вещей в моем вопросе (и некоторые неправильно), поэтому я хотел бы исправить/уточнить, что я ищу.
Ссылаясь на данные примера, я хотел бы сгруппировать его в нерегулярные пииворды 10 с; то есть, если есть пробел в данных, следующий 10-й период должен начинаться с отметки времени следующего жизнеспособного rcord. (Пожалуйста, проигнорируйте предыдущее упоминание о равномерно распределенных образцах, оказывается, я неверно истолковал это требование, и я всегда могу отфильтровать его на более позднем этапе, если это необходимо). Так что я хотел бы что-то вроде этого:
| period | count | avg | std | std_over_avg | | 2010-01-01 09:20:12 - 2010-01-01 09:20:22 | 3 | 12 | 1.63 | 0.136 | | 2010-01-01 09:20:27 - 2010-01-01 09:20:37 | 3 | 18.6 | 0.577| 0.031 |