You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用ggplot绘制按产品类别统计的销量条形图(订单数×销量)

按产品类别统计总销量并绘制条形图的实现代码

核心逻辑

你需要先按产品类别对订单数据分组,汇总每个类别下的总销量(即同类别所有订单的销量字段求和,而非统计订单数量),再基于汇总结果生成条形图。

代码实现(Python + Pandas + Matplotlib)

1. 导入依赖库

import pandas as pd
import matplotlib.pyplot as plt

2. 加载数据(或替换为你的真实数据源)

这里用示例数据模拟你的订单结构,你可以换成从本地文件读取(比如 df = pd.read_csv('你的订单文件.csv')):

# 示例订单数据:订单编号、产品类别、单订单对应类别的销量
data = {
    '订单编号': ['OD001', 'OD002', 'OD003', 'OD004', 'OD005', 'OD006'],
    '产品类别': ['电子产品', '服装', '电子产品', '家居', '服装', '服装'],
    '销量': [3, 5, 2, 1, 4, 2]
}
df = pd.DataFrame(data)

3. 按类别汇总总销量

# 分组求和:按产品类别聚合,对销量字段求和得到总销量
category_total_sales = df.groupby('产品类别')['销量'].sum().reset_index()
# 重命名列名(可选,让结果更直观)
category_total_sales.columns = ['产品类别', '总销量']

4. 绘制条形图

# 设置绘图风格(可选)
plt.style.use('seaborn-v0_8')

# 创建条形图
plt.bar(category_total_sales['产品类别'], category_total_sales['总销量'])

# 添加图表标签与标题
plt.xlabel('产品类别')
plt.ylabel('总销量')
plt.title('各产品类别总销量统计')

# 在条形上方标注具体数值(可选,提升可读性)
for idx, value in enumerate(category_total_sales['总销量']):
    plt.text(idx, value + 0.1, str(value), ha='center')

# 自动调整布局,避免标签重叠
plt.tight_layout()

# 显示图表
plt.show()

补充说明

  • 核心区别:用sum()计算总销量,而非count()统计订单数量,精准匹配你的需求。
  • 多类别订单兼容:如果同一订单编号对应多个产品类别(即同一订单有多行不同类别数据),上述代码依然有效,会按类别单独汇总该订单内对应类别的销量。
  • 美观化可选:如果想用Seaborn绘制更精致的条形图,可替换绘图部分为:
import seaborn as sns
sns.barplot(x='产品类别', y='总销量', data=category_total_sales)
plt.title('各产品类别总销量统计')
plt.show()

内容的提问来源于stack exchange,提问作者F M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:15:51