我的数据在某个日期上可以有多个事件,也可能没有任何事件。我将这些事件按日期计数并绘制图表。然而,在绘制图表时,我的两个系列不总是匹配的。
idx = pd.date_range(df['simpleDate'].min(), df['simpleDate'].max())
s = df.groupby(['simpleDate']).size()
在上述代码中,idx 变成了一个包含30个日期的范围,例如从 2013年09月01日到2013年09月30日。然而,由于某些日期没有任何事件发生,S 只有25或26天。因此,在尝试绘制图表时,大小不匹配会导致 AssertionError。
fig, ax = plt.subplots()
ax.bar(idx.to_pydatetime(), s, color='green')
什么是解决这个问题的正确方法?我应该删除 IDX 中没有值的日期,还是(我更愿意这样做)将缺失的日期及其计数为0添加到系列中。我宁愿有一个完整的图形,其中包含30天的0值。如果这种方法是正确的,您有什么建议可以开始吗?我需要某种动态
reindex
函数吗?这是 S 的片段(
df.groupby(['simpleDate']).size()
),请注意04和05没有条目。09-02-2013 2
09-03-2013 10
09-06-2013 5
09-07-2013 1
reindex
是一个非常棒的函数。它可以 (1) 重新排序现有数据以匹配新的标签集,(2) 在之前没有标签的位置插入新行,(3) 填充缺失标签的数据(包括向前/向后填充),(4) 可以通过标签选择行! - unutbuidx = pd.date_range(df.index.min(), df.index.max())
。 - Reveille