【问题标题】:Use groupby() for plotting sales trend使用 groupby() 绘制销售趋势
【发布时间】: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() 函数吗?

【问题讨论】:

    标签: python pandas matplotlib group-by


    【解决方案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
    • 查看我的编辑。如果这不是您所追求的,我很乐意提供进一步的帮助
    猜你喜欢
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 2011-07-29
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多