我有一个pandas的DataFrame数据,其中包含一个TIMESTAMP
列,其数据类型为datetime64。请注意,最初这一列不是索引;索引只是普通整数,前几行如下所示:
TIMESTAMP TYPE
0 2014-07-25 11:50:30.640 2
1 2014-07-25 11:50:46.160 3
2 2014-07-25 11:50:57.370 2
每天都有任意数量的记录,有些天甚至没有数据。我需要得到的是每月平均每日记录数,然后绘制条形图,以月份为 x 轴(如2014年4月、2014年5月等)。我已经使用以下代码计算了这些值。
dfWIM.index = dfWIM.TIMESTAMP
for i in range(dfWIM.TIMESTAMP.dt.year.min(),dfWIM.TIMESTAMP.dt.year.max()+1):
for j in range(1,13):
print dfWIM[(dfWIM.TIMESTAMP.dt.year == i) & (dfWIM.TIMESTAMP.dt.month == j)].resample('D', how='count').TIMESTAMP.mean()
以下是输出结果:
nan
nan
3100.14285714
6746.7037037
9716.42857143
10318.5806452
9395.56666667
9883.64516129
8766.03225806
9297.78571429
10039.6774194
nan
nan
nan
这段文本是可以的,经过一些处理,我可以将结果映射到正确的月份名称,然后绘制条形图。但是,我不确定这是否是正确/最佳的方法,我怀疑可能有更简单的方法使用Pandas获得结果。
如果我不将时间戳列设置为索引,则会出现“此dtype不允许平均值的缩减操作”错误。
请注意:
groupby
,结果发现TimeGrouper
是个好东西。非常感谢! - marillion