【问题标题】:Count number of records in a specific time interval in Python在Python中计算特定时间间隔内的记录数
【发布时间】:2017-08-26 22:45:27
【问题描述】:

我正在读取包含以下数据的 csv 文件:

Create Date,           Original Filesize,  Number of Encodings
2016-01-27 16:27:10,   855583191,          1
2016-01-27 16:28:11,   854336,             1
2016-01-27 16:28:25,   854336,             1
2016-01-27 16:30:12,   9691559,            1

我想统计表中每两分钟生成的记录数。

例如如果我们从2016-01-27 16:27:00开始 然后从2016-01-27 16:27:012016-01-27 16:29:00,我们有2 记录。 从2016-01-27 16:29:012016-01-27 16:31:00,我们有1 记录等等。

我正在尝试使用pandas,因为我想稍后对其进行一些数据分析。有/没有熊猫有没有简单的方法来做到这一点?

另外,我首先使用mysql 来导出这些数据。如果使用sql更方便,也可以。

【问题讨论】:

标签: python mysql pandas


【解决方案1】:

我认为您可以将resamplesum 一起使用:

print df.resample('2min').sum()
                     Original Filesize  Number of Encodings
Create Date                                                
2016-01-27 16:26:00          855583191                    1
2016-01-27 16:28:00            1708672                    2
2016-01-27 16:30:00            9691559                    1

print df.resample('2min', base=1).sum()
                     Original Filesize  Number of Encodings
Create Date                                                
2016-01-27 16:27:00          857291863                    3
2016-01-27 16:29:00            9691559                    1

或者如果您只需要聚合列Number of Encodings

print df.resample('2min')['Number of Encodings'].sum().reset_index()
          Create Date  Number of Encodings
0 2016-01-27 16:26:00                    1
1 2016-01-27 16:28:00                    2
2 2016-01-27 16:30:00                    1

print df.resample('2min', base=1)['Number of Encodings'].sum().reset_index()
          Create Date  Number of Encodings
0 2016-01-27 16:27:00                    3
1 2016-01-27 16:29:00                    1

如果您只需要计算行数,则更通用的是 size 聚合:

print df.resample('2min').size().reset_index(name='count')
          Create Date  count
0 2016-01-27 16:26:00      1
1 2016-01-27 16:28:00      2
2 2016-01-27 16:30:00      1

print df.resample('2min', base=1).size().reset_index(name='count')
          Create Date  count
0 2016-01-27 16:27:00      3
1 2016-01-27 16:29:00      1

【讨论】:

  • 优雅的答案,+1。我通过了cut,但它需要的不仅仅是一行!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-06
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
相关资源
最近更新 更多