【问题标题】:python - Aggregating time stamps to see how many I have in 10 ­minutes time intervalspython - 聚合时间戳以查看我在 10 分钟的时间间隔内有多少
【发布时间】:2016-06-01 10:53:02
【问题描述】:

我有一个 jason 文件中的日期列表,并且喜欢汇总它们以查看我在 10 分钟的时间间隔内有多少个日期。我认为 Pandas 中的时间序列是我应该寻找的,但我很困惑!有什么想法吗?

[更多详情] 当我使用 pd.read_json 加载 json 文件时;我只得到一列;其中大约有 10,000 行。每行都是一个 pandas.tslib.Timestamp,例如“1970-01-01 20:12:16”。 理想情况下,我喜欢将这些时间戳分组为 10 分钟的时间间隔;查看每个间隔中有多少个时间戳并绘制条形图(直方图)。

【问题讨论】:

  • 那么,时间的格式是怎样的?你都尝试了些什么?你必须给我们更多的合作。
  • 请看这里,了解如何提出好问题:stackoverflow.com/help/mcve
  • 刚刚添加了更多细节..

标签: python pandas time series


【解决方案1】:

你可以这样做resample

时间戳列上的第一个索引,如果您还没有这样做的话:

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

添加一个数字列(你需要一些东西来重新采样聚合):

df['count'] = 1

最后根据需要重新采样:

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

【讨论】:

    【解决方案2】:

    我使用截断来做到这一点:

    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
    ...
    

    编辑

    A. 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 2021-05-12
      • 2022-01-15
      • 1970-01-01
      • 2019-09-12
      相关资源
      最近更新 更多