Лучший способ объединить временные данные?

Я работаю с неравномерно собранными, привязанными по меткам данными, и в конечном итоге будет составлять статистику по каждой минуте в час. Мне интересно, какой лучший способ агрегировать по периодам времени.

В настоящее время я вычисляю две лямбда-функции, а затем добавляю два столбца в dataframe следующим образом:

h = lambda i: pd.to_datetime(i.strftime('%Y-%m-%d %H:00:00')) m = lambda i: pd.to_datetime(i.strftime('%Y-%m-%d %H:%M:00')) df['hours'] = df.index.map(h) df['minutes'] = df.index.map(m) 

Это позволяет мне легко groupby с помощью groupby :

 by_hour = df.groupby('hours') 

Я уверен, что есть лучший или более питонический способ сделать это, но я не понял этого и буду признателен за любую помощь.

One Solution collect form web for “Лучший способ объединить временные данные?”

У вас есть пара вариантов с пандами. Для простой статистики вы можете использовать метод resample на DataFrame / Series с индексом datetime.

 In [35]: ts Out[35]: 2012-01-01 00:00:00 127 2012-01-01 00:00:01 452 2012-01-01 00:00:02 231 2012-01-01 00:00:03 434 2012-01-01 00:00:04 139 2012-01-01 00:00:05 223 2012-01-01 00:00:06 409 2012-01-01 00:00:07 101 2012-01-01 00:00:08 3 2012-01-01 00:00:09 393 2012-01-01 00:00:10 208 2012-01-01 00:00:11 416 2012-01-01 00:00:12 136 2012-01-01 00:00:13 343 2012-01-01 00:00:14 387 ... 2012-01-01 00:01:25 307 2012-01-01 00:01:26 267 2012-01-01 00:01:27 199 2012-01-01 00:01:28 479 2012-01-01 00:01:29 423 2012-01-01 00:01:30 334 2012-01-01 00:01:31 442 2012-01-01 00:01:32 282 2012-01-01 00:01:33 289 2012-01-01 00:01:34 166 2012-01-01 00:01:35 4 2012-01-01 00:01:36 306 2012-01-01 00:01:37 165 2012-01-01 00:01:38 415 2012-01-01 00:01:39 316 Freq: S, Length: 100 In [37]: ts.resample('t', how='mean') Out[37]: 2012-01-01 00:00:00 270.166667 2012-01-01 00:01:00 221.400000 Freq: T, dtype: float64 

Для большей гибкости вы можете группировать атрибут hour (или минуты, секунды и т. Д.) Объектов метки времени:

 In [38]: g = ts.groupby(lambda x: x.minute) In [39]: g Out[39]: <pandas.core.groupby.SeriesGroupBy object at 0x107045150> 

Взгляните на документы по повторной выборке: http://pandas.pydata.org/pandas-docs/dev/timeseries.html#up-and-downsampling

  • Самый быстрый способ заполнения QTableView из кадра данных Pandas
  • Переупорядочение непоследовательного порядка столбцов в кадре данных pandas
  • pandas намного медленнее, чем numpy?
  • Как распространить столбец в кадре данных Pandas
  • Установить значения на диагонали pandas.DataFrame
  • Заполните Pandas SparseDataFrame из SciPy Sparse Matrix
  • Панды суммируют по группам, но исключают определенные столбцы
  • Python запрещает DataFrame Pandas
  • Python - лучший язык программирования в мире.