Python:基于订单DataFrame绘制各颜色月度出现占比折线图的方法
实现方案
步骤1:修正分组逻辑
你原有的代码仅按颜色维度分组,缺少了月度维度的拆分,因此无法得到分月的统计结果。我们需要同时按「月份」和「颜色」两个维度分组计算。
步骤2:完整代码实现
首先确保你的DataFrame索引为datetime类型,再按以下逻辑计算:
import pandas as pd import matplotlib.pyplot as plt # 1. 转换索引为datetime格式(如果已为datetime可跳过该步) df.index = pd.to_datetime(df.index) # 2. 按月末+颜色分组统计数量,当月未出现的颜色自动补0 monthly_color_cnt = df.groupby([pd.Grouper(freq="M"), "Color"])["Color"].count().unstack(fill_value=0) # 3. 计算各颜色月度占比:单颜色数量 / 当月总订单数 monthly_color_ratio = monthly_color_cnt.div(monthly_color_cnt.sum(axis=1), axis=0) # 4. 绘制折线图 monthly_color_ratio.plot(kind="line", figsize=(12, 6), marker="o") plt.title("各颜色月度出现占比趋势") plt.xlabel("月份") plt.ylabel("占比") plt.legend(title="颜色") plt.grid(alpha=0.3) plt.show()
输出说明
最终得到的monthly_color_ratio就是你需要的格式:
- 索引为每月月末日期
- 列名为所有出现过的颜色
- 值为对应颜色当月占比,当月无订单的颜色默认填充为0
内容的提问来源于stack exchange,提问作者Jordy Slinkman
相关产品推荐
相关产品推荐

