计算Python中特定时间间隔内的记录数

时间:2016-03-29 06:59:09

标签: python mysql pandas

我正在读取包含以下数据的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

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

E.g。如果我们从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更容易,那也没关系。

1 个答案:

答案 0 :(得分:4)

我认为您可以resample使用sum

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