【问题标题】:Plotting time series data by grouping at an hour and day level通过按小时和天分组来绘制时间序列数据
【发布时间】:2020-05-21 10:08:51
【问题描述】:

我有一个 pandas 数据框,它在提出乘车请求时具有时间戳。数据具有时间序列性质。我想绘制 365 天内每天提出的请求数。我创建了一个包含所有内容的新列,并尝试按操作和情节分组,但没有运气。有人可以帮忙吗?

Time Stamp                        Ride
2018-04-07 07:07:17                1
2018-04-07 07:06:12                1

【问题讨论】:

    标签: python pandas plot time-series


    【解决方案1】:

    有几种方法可以做到这一点。首先让我们获取数据:

    import pandas as pd
    df = pd.DataFrame({'Time Stamp': ['2018-04-07 07:07:17', '2018-04-07 07:06:12'], 'Ride': [1, 1]})
    df['Time Stamp'] = pd.to_datetime(df['Time Stamp'])
    

    您可以将groupbyGrouper 一起使用,它会返回一个系列:

    df.groupby(pd.Grouper(key='Time Stamp', freq='1D')).Ride.sum()
    
    # Time Stamp
    # 2018-04-07    2
    # Freq: D, Name: Ride, dtype: int64
    

    或者你可以将时间戳放在索引中并使用resample,它会返回一个数据帧:

    df.set_index('Time Stamp').resample('1D').sum()
    
    #               Ride
    # Time Stamp    
    # 2018-04-07    2
    

    【讨论】:

    • 非常感谢。IT 工作。我使用了石斑鱼方法。如果我想使用 resample 方法,我有 3 个列而不是ride,我如何只为 sum 选择ride 列?
    • 由于resample 返回的行数与您原来的不同,您需要将它作为一个整体应用于对象。因此,最好的方法是在设置索引并应用重采样之前选择所需的列。因此,假设您有更多列,您可以像这样选择时间列和所有要重新采样的列(在本例中为“Ride”):df[['Time Stamp', 'Ride']].set_index('Time Stamp').resample('1D').sum()
    猜你喜欢
    • 2019-10-15
    • 2020-06-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    相关资源
    最近更新 更多