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

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

В настоящее время я вычисляю две лямбда-функции, а затем добавляю два столбца в 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

  • Разделить несколько столбцов на другой столбец в пандах
  • Pandas dataframe скрывает функциональность индекса?
  • имя столбца, которое содержит максимальное значение
  • Какой самый быстрый способ в Python вычислить подобие косинуса при использовании разреженных матричных данных?
  • Как пробовать массив numpy и эффективно выполнять вычисления по каждому образцу?
  • Применение условий в столбцах Pandas DataFrame перед чтением файлов csv или tsv
  • Как изменить данные каждой n-й строки с помощью панд?
  • Группа данных Python pandas по выбору столбцов
  • возвращает имена столбцов из инструкции pyodbc execute ()
  • Эффективное письмо к нескольким соседним столбцам в пандах
  • Получить дату создания файла - добавить в колонку dataframes по read_csv
  • Python - лучший язык программирования в мире.