【问题标题】:How to create 4 hour time interval in Time Series Analysis (python)如何在时间序列分析(python)中创建 4 小时的时间间隔
【发布时间】:2020-05-02 01:33:31
【问题描述】:

我对时间序列分析完全陌生,我正在尝试处理在线提供的示例

这是我目前拥有的:

# 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

【问题讨论】:

  • 想法是,获取小时数,除以 4,向下取整,然后乘以 4 为 4 小时窗口,然后按该列总和分组
  • 您的想法通过上述数据框中的所有列给我的值为 4,这不是我想要的。
  • 你的意思是给你所有列的值为 4?
  • ID 计数小时分钟日期时间 2012-08-25 00:00:00 4 4 4 4 2012-08-25 04:00:00 4 4 4 4 2012-08-25 08:00: 00 4 4 4 4 2012-08-25 12:00:00 4 4 4 4 2012-08-25 16:00:00 4 4 4 4

标签: python-3.x time-series


【解决方案1】:

我认为您正在寻找的是重采样功能,请参见此处: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(),将每个组的所有元素转换为每个时间块的单个元素

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-20
    • 2020-06-03
    • 2022-01-27
    • 1970-01-01
    • 2021-07-16
    • 2022-01-22
    • 1970-01-01
    • 2021-12-21
    相关资源
    最近更新 更多