我有一组表格数据,已导入到 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 轴。我可以循环查看人员并获得平均每月事件计数,但似乎应该有一种简单的方法可以做到这一点,而我却缺少这种方法。
最佳答案
你可以尝试:
# 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')
关于python - 如何在 pandas 中对表格数据进行分类和绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58017693/