【问题标题】:Python 2.7 Find occurences from datetime and plotPython 2.7 从日期时间和绘图中查找事件
【发布时间】:2015-11-15 07:43:04
【问题描述】:

由于我在其他任何地方都没有找到这个主题,所以我会在这里问它。我从 CSV 文件中获取数据,我在其中一列中写入了日期时间格式。我使用 pandas 模块获得该列,然后我需要计算特定时间段中的出现次数并使用 matplotlib 绘制它。您可以在下面看到列示例。

     Time and Date
0    2015-08-21 10:51:06.398000  
1    2015-08-21 10:51:00.017000  
2    2015-08-21 10:52:06.402000     
3    2015-08-21 10:54:06.407000
...

我知道我可以这样分配时间:

pd.date_range("10:50", "12:30", freq="1min").time

但是我如何从 CSV 分配我的读取值的出现然后绘制它?任何建议或方向都会有所帮助。

【问题讨论】:

    标签: python-2.7 pandas matplotlib plot find-occurrences


    【解决方案1】:

    很难说出您想要什么,因为您没有发布所需的输出,但如果我理解正确,您想计算一定长度的时间间隔内的行数。您可以通过组合resamplelen 来做到这一点。要使用resample,首先将索引设置为'Time and Date

    df.set_index('Date and Time', drop=False)
    

    请注意,drop=False 仅在数据框没有其他列时才是必需的。 然后得到每1分钟间隔的行数做

    counts = df.resample('1min', len).astype(int)
    

    如果有多个日期,并且您想对每个时间间隔的计数求和,那么可以

    counts.groupby(lambda ts: ts.time()).sum()
    

    【讨论】:

    • 我必须说你理解正确,但是当我尝试重新采样时,我得到了 TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex。
    • 哦,我明白了。第一行应该是df.set_index('Date and Time', drop=False, inplace=True)df = df.set_index('Date and Time', drop=False)。没有这个df 不会以任何方式改变
    • 这行得通,但由于我需要对我们进行高粒度,因此对我们进行重新采样会挂起。该问题有什么解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 2021-05-28
    • 2011-01-13
    • 1970-01-01
    • 2011-03-03
    • 2015-12-23
    • 1970-01-01
    • 2015-04-26
    • 2020-07-15
    相关资源
    最近更新 更多