侧边栏壁纸
博主头像
colo

欲买桂花同载酒

  • 累计撰写 1825 篇文章
  • 累计收到 0 条评论

计算产品销售额并找出最高销售额产品

2025-12-11 / 0 评论 / 4 阅读

题目

计算产品销售额并找出最高销售额产品

信息

  • 类型:问答
  • 难度:⭐

考点

DataFrame创建,列运算,分组聚合,最大值索引

快速回答

解决方案分为四步:

  1. 创建包含产品、数量和单价的DataFrame
  2. 添加销售额列(数量×单价)
  3. 按产品分组计算总销售额
  4. 使用idxmax()找出最高销售额产品

核心代码:

df['sales'] = df['quantity'] * df['price']
total_sales = df.groupby('product')['sales'].sum()
top_product = total_sales.idxmax()
## 解析

问题场景

给定产品销售数据,包含产品名称、销售数量和单价,需要计算每个产品的总销售额并找出销售额最高的产品。这是数据分析中的常见任务,涉及基础数据处理技术。

完整解决方案

import pandas as pd

# 1. 创建DataFrame
data = {
    'product': ['A', 'B', 'A', 'C', 'B', 'C'],
    'quantity': [10, 5, 8, 12, 6, 15],
    'price': [20, 30, 20, 15, 30, 15]
}
df = pd.DataFrame(data)

# 2. 计算销售额列
df['sales'] = df['quantity'] * df['price']

# 3. 分组计算总销售额
total_sales = df.groupby('product')['sales'].sum()

# 4. 找出最高销售额产品
top_product = total_sales.idxmax()
print(f"销售额最高的产品是: {top_product}")

原理说明

  • 列运算:Pandas支持向量化运算,df['quantity'] * df['price']会逐元素计算,效率远高于循环
  • 分组聚合groupby('product')按产品分组,sum()对每组销售额求和
  • idxmax():返回Series中最大值对应的索引(此处即产品名称)

最佳实践

  • 优先使用向量化运算而非循环,提升性能
  • 分组后重置索引更清晰:total_sales.reset_index(name='total_sales')
  • 结果排序:total_sales.sort_values(ascending=False)

常见错误

  • 忘记分组:直接对原始DataFrame求最大值会得到单笔最高销售额而非产品总和
  • 错误使用索引:混淆idxmax()(返回索引)和max()(返回值)
  • 数据类型错误:确保数量和单价为数值类型(df.astype({'quantity':'int', 'price':'float'})

扩展知识

  • 多级分组groupby(['category','product'])实现多维分析
  • 聚合函数组合.agg(['sum','mean','count'])一次性计算多个指标
  • 时间序列分析:结合resample()可按时间维度分组(如月度销售额)
  • 性能优化:大数据集使用Dask替代Pandas实现分布式计算