首页 > 解决方案 > 使用 groupby() 绘制销售趋势

问题描述

我想了解如何在此数据集上使用 groupby 或其他函数:

Date_ren  Quant  Y      M
2002-03-14  32  2002    3
2002-02-24  31  2002    2
2002-02-21  28  2002    2
... ... ... ...
2011-04-02  1   2011    4
2013-02-25  1   2013    2
2019-05-02  1   2019    5
2012-01-03  1   2012    1
2014-05-01  1   2014    5

我想要实现的是通过数月到数年对这些数据进行良好的可视化。它是关于产品的更新和该特定月份多年来销售的数量。由于我需要比较趋势如何随时间变化,因此我正在考虑绘制它们,按月分组,并考虑在特定时间窗口内的年变化。在拆分之前,我想像上面那样使用以下内容:

month = df.Date_ren.dt.to_period("M")  # new way to get the same
g = df.groupby(month)

或这个:

df.groupby(pd.Grouper(freq='M'))

但问题是绘制我的数据,仅保留有关年份和特定月份该年销售量的信息,并与其他数据进行比较。所以我应该有一个或多个单独的图来说明这种趋势,或者一个单独的图,通过按年份分组进行比较。例如:

M=1 -> 2002 , 2003, 2004, .... , 2019
M=2 -> ....
M=3 ->

在 y 轴上有 Quant(频率直方图)。

您能告诉我在这种特殊情况下如何考虑 groupby() 函数吗?

标签: pythonpandasmatplotlibgroup-by

解决方案


请试试

df.groupby(['Y','M'])['Quant'].sum().unstack().plot.bar(stacked=True)

跟随你的评论,我会尝试

import matplotlib.pyplot as plt
g=df.groupby(['Y','M'])['Quant'].sum().unstack()
g.index.name = 'M'#g.index.name = 'Y'
g.plot(kind="bar")

推荐阅读