python - 如何在 pandas 中对表格数据进行分类和绘制

标签 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 轴。我可以循环查看人员并获得平均每月事件计数,但似乎应该有一种简单的方法可以做到这一点,而我却缺少这种方法。

最佳答案

你可以尝试:

# 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/

相关文章:

python - 如何从 django 管理面板上传图像文件?

python - 用数据框中列表中的值替换索引

python - Pandas to_datetime 函数给出不稳定的输出

python - 衍生进程中的操作系统环境变量读取

Python Pandas - 通过保持特定顺序对值进行排序

python - 如何将 mechanize.Browser() cookie 保存到文件?

python - Jupyter notebook - 抑制 tsfresh 的输出

python - 数据对齐后无法导出为 CSV

python - Pandas:带条件减法的累积和

python - 如何使用 Pandas/Dask 更快地读取压缩(.gz)文件?