在 pandas 中聚合和绘制时间序列

Aggregate and plot time series in pandas

我有一个以日期为索引的数据框。我想计算每两周聚合一次的事件和情节。示例:

date        id
2018-01-01  a1
2018-01-01  a2
2018-01-05  a3
2018-01-12  a4
2018-01-15  a5
2018-01-17  a6
2018-01-19  a7
...

应该显示为(格式是说明性的,如果我能够区分就可以了):

2018-01-1   4
2018-01-2   3
...

然后剧情。

如果可能的话,我想要一个参数,这样我就可以切换到每周或每月。

如果日期是索引,您可以使用 resample 和 SemiMonthStart ('SMS') 频率:

df.index = pd.to_datetime(df.index)
df.resample('SMS').count()

输出:

            id
date          
2018-01-01   4
2018-01-15   3

您还可以使用 date offsets (here SemiMonthBegin) 来四舍五入您的日期并将此结果用于 groupby+count:

group = (pd.to_datetime(df['date'])
           .apply(pd.offsets.SemiMonthBegin().rollback)
           )

out = df.groupby(group)['id'].count()

输出:

date
2018-01-01    4
2018-01-15    3
Name: id, dtype: int64