如何分组和绘制

时间:2018-08-23 14:19:12

标签: python pandas matplotlib group-by

我有以下数据框(带有不同的广告系列)

enter image description here

当我使用groupby并尝试绘制时,我得到了几张图

df.groupby("Campaign").plot(y=["Visits"], x = "Week")

enter image description here

我只希望有一个图表,每个活动在一周时间内的所有访问都在同一图表中。另外,由于这些图形分开显示,因此我不知道每个广告系列属于哪个图形。

任何有关此的提示,我都将感谢。

2 个答案:

答案 0 :(得分:4)

您可以这样做:

df.set_index(['Week','Campaign'])['Visits'].unstack().plot(title='Visits by Campaign')

对于Week / Campaign的多个值,让我们将其与sum进行汇总,或者您可以使用mean来取平均值:

df.groupby(['Week','Campaign'])['Visits'].sum().unstack().plot(title='Visits by Campain')

输出:

enter image description here

答案 1 :(得分:2)

另一种可能的解决方案是使用seaborn

import seaborn as sns
ax = sns.lineplot(x="Week",
                  y="Visits",
                  hue="Campaign",
                  estimator=None,
                  lw=1,
                  data=df)

文档为here