python - 使用 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() 函数吗?
解决方案
请试试
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")
推荐阅读
- oracle - Oracle Apex 屏幕键盘
- c# - 以非管理员用户身份在应用启动时使用模拟修改配置文件
- c# - 由于未启用/订阅服务而拒绝访问应用程序
- html - 仅包含 HTML 的可视化时间线
- css - 区域填充到所有容器区域的宽度
- java - 用作参考的字符串文字
- swift - 在更新 ObservedObject 时更新 Picker
- javascript - Javascript .indexOf 匹配的 HTML 符号
- java - Creating a new window on button click - Vaadin14
- mysql - Why does this query suddenly return no results when adding more parameters in an IN clause?