2016-02-19 3 views
1

У меня есть список дат в файле jason, и я хотел бы заполнить их, чтобы узнать, сколько у меня есть в 10-минутных временных интервалах .. Я думаю временные ряды в Пандах - это то, что я должен искать, но я смущен! Есть идеи?python - Агрегация временных меток, чтобы узнать, сколько у меня есть за 10 минут интервалов времени

[подробнее] при загрузке json-файла с использованием pd.read_json; Я получаю только одну колонку; который имеет около 10 000 строк. каждая строка - pandas.tslib.Timestamp, такая как «1970-01-01 20:12:16». В идеале, я хотел бы сгруппировать эти временные метки в промежутки времени 10 минут; чтобы увидеть, сколько временных меток у меня есть в каждом интервале и нарисовать гистограмму (гистограмма).

+0

Хорошо, как отформатировано время? что ты уже испробовал? вы должны дать нам больше для работы. – n1c9

+1

Пожалуйста, посмотрите здесь, чтобы узнать, как задать хороший вопрос: http://stackoverflow.com/help/mcve –

+0

просто добавлено более подробно .. – SN65

ответ

3

Вы можете это сделать resample.

Первый индекс по столбцу временной метки, если вы еще не сделали этого:

df.set_index('time', inplace=True) 

Добавить числовой столбец (вам нужно что-то для передискретизации агрегировать):

df['count'] = 1 

И наконец RESAMPLE по мере необходимости:

df.resample('10T', how='sum') 
1

Я использую усечение, чтобы сделать это:

import random 
import pandas as pd 
import datetime as dt 

ts = [dt.datetime.now() + dt.timedelta(minutes = random.randint(1000)) for _ in range(1000)] 
df = pd.DataFrame(ts, columns = ['ts']) 

def truncate(t): 
    return dt.datetime(month = t.month, day = t.day, year = t.year, hour = t.hour, minute = (55/10) * 10) 

df.ts.map(truncate).value_counts() 

даст вам отсчеты за 10 минут

2016-02-20 00:50:00 79 
2016-02-19 23:50:00 75 
2016-02-20 08:50:00 72 
2016-02-19 21:50:00 70 
... 

EDIT:

Метод А. Leistra гораздо лучше, я узнал кое-что, как хорошо. Он работает от вышеприведенной настройки:

df.set_index('ts', inplace = True) 
df['count'] = 1 
df.resample('10T', how = sum).head() 

count | ts 
--- | --- 
2016-02-19 21:00:00  5 
2016-02-19 21:10:00  11 
2016-02-19 21:20:00  17 
2016-02-19 21:30:00  13 
2016-02-19 21:40:00  11 

 Смежные вопросы

  • Нет связанных вопросов^_^