如何在熊猫中对列表数据进行分类和绘制

时间:2019-09-19 19:18:32

标签: python pandas

我有一组列表数据,我已将它们导入到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。

1 个答案:

答案 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')