我有一组列表数据,我已将它们导入到pandas数据框中。每行记录一个特定人所发生的特定事件,以及事件的日期,以及一堆正确的外部信息。每个人每个日期可以有多个事件。 “人员”标识符是唯一的。
events = {'Date': ['1-12-2018', '1-18-2018', '2-12-2019', etc],
'Person': ['Bob','Bob','Joe','Frank']}
我想绘制一个折线图,显示每月的事件计数,每个人作为单独的线条。我还想计算每人的平均事件计数。
首先,我认为如果我单独编写一个月-年列,可能会更容易一些:
events['MY']=events.Date.dt.strftime('%Y-%m')
我可以轻松地为一个人做我想做的事情:
bob = events.loc[events['Person']=='Bob']
%Plots bob's monthly event count:
bob.MY.groupby(bob.MY).count().plot()
%Calculates bob's average monthly event count
bob.MY.groupby(bob.MY).count().mean()
但是,我不知道如何为多个人做到这一点,而且我觉得我也不是最好的方法。如果我试图绕过人员并分别将它们绘制成一条线,则会将x轴固定在图中。我可以遍历人员并获取平均每月活动计数,但是似乎应该有一种简单的方法来实现这一点,而我却对此感到迷missing。
答案 0 :(得分:0)
您可以尝试:
# monthly event count
event_counts = events.pivot_table(index='MY', columns='Person', aggfunc='count')
# plot monthly count:
ax = event_counts.plot()
# plot mean:
event_counts.mean(axis=1).plot()
# if you want to plot mean along personal counts
event_counts.mean(axis=1).plot(ax=ax, label='mean')