使用 groupby() 绘制销售趋势

Posted

技术标签:

【中文标题】使用 groupby() 绘制销售趋势【英文标题】:Use groupby() for plotting sales trend 【发布时间】:2021-02-14 01:29:12 【问题描述】:

我想了解如何对这个数据集使用 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() 函数吗?

【问题讨论】:

【参考方案1】:

请尝试

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")

【讨论】:

感谢 wwnde,如果我在解释问题时不是很清楚,我很抱歉。我想做的只是查看条形图(如果多个可能会更好,例如,对于一月份,我可以在 x 轴上绘制所有年份;然后对于二月份,我也这样做,...)。我认为在这种特殊情况下,子图应该比一个图更好。但在 Excel 中,我可以使用堆叠/未堆叠的集群数据(例如 superuser.com/questions/302232/stacked-clustered-chart-in-excel) 查看我的编辑。如果这不是您所追求的,我很乐意提供进一步的帮助

以上是关于使用 groupby() 绘制销售趋势的主要内容,如果未能解决你的问题,请参考以下文章

迭代 Pandas 分组数据框

Group by

GroupBy和集合交集

如何使用 plotly 和 streamlit 绘制 groupby

groupby 多个值,并绘制结果

iTunes Connect 销售和趋势未显示