Как создать 4-часовой интервал времени в анализе временных рядов (python) - PullRequest
1 голос
/ 15 января 2020

Я совершенно новичок в анализе временных рядов и пытаюсь работать с примерами, доступными в Интернете

. Это то, что у меня сейчас есть:

# Time based features
data = pd.read_csv('Train_SU63ISt.csv')
data['Datetime'] = pd.to_datetime(data['Datetime'],format='%d-%m-%Y %H:%M')

data['Hour'] = data['Datetime'].dt.hour 
data['minute'] = data['Datetime'].dt.minute 

data.head()


    ID             Datetime Count   Hour    Minute
0   0   2012-08-25 00:00:00     8      0         0
1   1   2012-08-25 01:00:00     2      1         0
2   2   2012-08-25 02:00:00     6      2         0
3   3   2012-08-25 03:00:00     2      3         0
4   4   2012-08-25 04:00:00     2      4         0

Что я ищу это что-то вроде этого:

    ID             Datetime Count   Hour    Minute          4-Hour-window
 0   0  2012-08-25 00:00:00    20      4         0    00:00:00 - 04:00:00
 1   1  2012-08-25 04:00:00    22      8         0    04:00:00 - 08:00:00
 2   2  2012-08-25 08:00:00    18     12         0    08:00:00 - 12:00:00
 3   3  2012-08-25 12:00:00    16     16         0    12:00:00 - 16:00:00
 4   4  2012-08-25 16:00:00    18     20         0    16:00:00 - 20:00:00
 5   5  2012-08-25 20:00:00    14     24         0    20:00:00 - 00:00:00
 6   6  2012-08-25 00:00:00    20      4         0    00:00:00 - 04:00:00
 7   7  2012-08-26 04:00:00    24      8         0    04:00:00 - 08:00:00
 8   8  2012-08-26 08:00:00    20     12         0    08:00:00 - 12:00:00
 9   9  2012-08-26 12:00:00    10     16         0    12:00:00 - 16:00:00
10  10  2012-08-26 16:00:00    18     20         0    16:00:00 - 20:00:00
11  11  2012-08-26 20:00:00    14     24         0    20:00:00 - 00:00:00

1 Ответ

1 голос
/ 15 января 2020

Я думаю, что вы ищете функцию повторной выборки, см. Здесь: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.resample.html

Что-то вроде этого должно работать (не проверено):

sampled_data = data.resample(
    '4H',
    kind='timestamp',
    on='Datetime',
    label='left'
).sum()

Функция очень похожа на groupby и группирует данные в порции столбца, указанного в on=, в этом случае мы используем временные метки и порции по 4 часа. Наконец, вам нужно использовать некоторую дезагрегацию, в данном случае sum(), чтобы преобразовать все элементы каждой группы в один элемент за отрезок времени

...