← 返回首页

项目02:销售数据分组聚合

使用 groupby 进行多维度数据分析,计算统计指标

📊 数据集预览

使用 retail_orders 数据集,包含订单ID、产品、数量、价格、地区、日期等信息。

retail_orders.csv(前5行)

🎯 学习目标

  • 掌握 groupby 的基本用法
  • 学会按单个或多个维度分组
  • 使用聚合函数(sum、mean、count、median)
  • 对分组结果进行排序
  • 计算分组统计指标

📚 知识点讲解

什么是分组聚合?

分组聚合(GroupBy)是数据分析中最强大的操作之一,它允许我们:

  • 按一个或多个列对数据进行分组
  • 对每个组应用聚合函数(求和、平均、计数等)
  • 分析数据的分布和模式
💡 小贴士:groupby 的工作原理可以概括为:split(拆分)- apply(应用)- combine(合并)

一、基本分组操作

1.1 按单列分组

使用 groupby() 方法按单个列分组,然后应用聚合函数。

# 按产品分组并求和
product_group = df.groupby('product').sum()

print(product_group)

1.2 选择特定列聚合

可以只对特定列进行聚合操作,提高效率。

# 只对 quantity 列求和
product_qty = df.groupby('product')['quantity'].sum()

print(product_qty)

1.3 按多列分组

传入列名列表,可以按多个维度进行分组。

# 按产品和地区两个维度分组
multi_group = df.groupby(['product', 'region']).sum()

print(multi_group)

二、常用聚合函数

2.1 sum() - 求和

计算每组的总和,常用于计算总销售额、总数量等。

# 按地区分组计算总销量
region_sales = df.groupby('region')['quantity'].sum()

print(region_sales)

2.2 mean() - 均值

计算每组的平均值,常用于计算平均价格、平均订单量等。

# 按产品分组计算平均价格
product_mean = df.groupby('product')['price'].mean()

print(product_mean)

2.3 count() - 计数

计算每组的非缺失值数量,常用于统计订单数。

# 按地区统计订单数量
region_count = df.groupby('region')['order_id'].count()

print(region_count)

2.4 median() - 中位数

计算每组的中位数,适合处理有异常值的数据。

# 按产品计算价格中位数
product_median = df.groupby('product')['price'].median()

print(product_median)

三、高级聚合技巧

3.1 使用 agg() 应用多个函数

agg() 允许同时对同一列应用多个聚合函数。

# 同时计算 sum 和 mean
product_stats = df.groupby('product')['quantity'].agg(['sum', 'mean'])

print(product_stats)

3.2 对不同列应用不同函数

可以为不同列指定不同的聚合函数。

# 对 quantity 求和,对 price 求均值
product_agg = df.groupby('product').agg({
    'quantity': 'sum',
    'price': 'mean'
})

print(product_agg)

3.3 分组后排序

对分组结果进行排序,找出最大/最小的组。

# 按产品分组并排序
product_group = df.groupby('product')['quantity'].sum()
sorted_result = product_group.sort_values(ascending=False)

print(sorted_result)
💡 小贴士:ascending=False 表示降序排序,ascending=True 表示升序排序(默认)

💻 代码实战

在下方代码编辑器中编写并运行完整的分组聚合代码:

02-groupby/main.py
点击"运行代码"按钮执行
📋 总代码运行框
点击"运行代码"查看输出...