使用 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() 绘制销售趋势的主要内容,如果未能解决你的问题,请参考以下文章