TT's Learning
← 返回首页

分组聚合分析

掌握Pandas的分组和聚合功能,学习如何按类别分组并计算统计指标。

入门 30分钟 📁 retail_orders.csv
学习进度
0%
0/4
已学习
0/5
练习
0
得分
第一章 分组与聚合基础

1.1 什么是分组聚合?

分组聚合是数据分析中的核心操作,它允许我们按特定类别对数据进行分组,然后对每个组进行统计计算。

  • 分组(Group):按一个或多个列的唯一值将数据分组
  • 聚合(Aggregation):对每个分组进行统计计算(求和、平均、计数等)
  • 透视表(Pivot):创建交叉表来展示多维聚合结果

💡 分组聚合是SQL中GROUP BY的Pandas实现,但更强大、更灵活。

1.2 基本分组操作

让我们学习使用groupby进行分组:

import pandas as pd
import numpy as np

data = {
    'category': ['电子产品', '服装', '电子产品', '服装', '食品'],
    'price': [1000, 200, 1500, 300, 50],
    'quantity': [5, 10, 8, 15]
}
df = pd.DataFrame(data)

print('原始数据:')
print(df)
💻 在线代码编辑器
输入 Python 代码后点击运行按钮执行
第二章 聚合函数

2.1 常用聚合函数

Pandas提供了丰富的聚合函数供我们使用:

# 单个聚合函数
df.groupby('category').mean()

# 多个聚合函数
df.groupby('category').agg(['mean', 'sum', 'max', 'min', 'std'])

# 不同列应用不同聚合
agg_dict = {
    'price': ['mean', 'sum', 'max'],
    'quantity': ['sum', 'count']
}
df.groupby('category').agg(agg_dict)

2.2 自定义聚合函数

除了内置函数,我们还可以定义自己的聚合函数:

def range_func(x):
    return x.max() - x.min()

df.groupby('category').agg({
    'price': ['mean', range_func],
    'quantity': ['sum', 'count']
})
第三章 多维度分组

3.1 多列分组

可以按多个列进行分组来获得更细粒度的分析:

data = {
    'category': ['电子产品', '电子产品', '服装', '服装', '服装'],
    'region': ['华东', '华北', '华东', '华北', '华南'],
    'price': [1000, 1500, 200, 300, 250],
    'quantity': [5, 8, 10, 15, 12]
}
df = pd.DataFrame(data)

# 按类别和地区分组
df.groupby(['category', 'region']).sum()

3.2 透视表和交叉表

使用pivot_table创建美观的透视表:

# 透视表
pd.pivot_table(df, 
    values='price', 
    index='category', 
    columns='region', 
    aggfunc='mean',
    fill_value=0)

# 交叉表 - 计数
pd.crosstab(df['category'], df['region'])
第四章 分组后的操作

4.1 transform 方法

transform允许我们保持原始数据的形状:

# 计算每个类别的占比
df['category_total'] = df.groupby('category')['price'].transform('sum')
df['price_ratio'] = df['price'] / df['category_total']

4.2 apply 方法

apply可以对每个分组应用任意函数:

def top_items(group, n=2):
    return group.nlargest(n, 'price')

df.groupby('category').apply(top_items)
练习题(共5题)

练习 1:基本分组

按类别分组并计算销售额总和。

练习 2:多个聚合

对同一列同时计算多个聚合指标。

练习 3:多列分组

按类别和地区两列进行分组分析。

练习 4:不同列不同聚合

对不同列应用不同的聚合函数。

练习 5:透视表

创建透视表展示数据。

测试题(共 5 题,满分 100 分)

问题 1 / 5

groupby操作返回的是什么类型的对象?

问题 2 / 5

想要保持原始数据形状的分组操作,应该使用?

问题 3 / 5

count和size在groupby中的区别是?

问题 4 / 5

关于pivot_table说法正确的是?

问题 5 / 5

对分组应用复杂操作时,最灵活的方法是?

作业提交

📝 分组聚合分析作业

请完成以下分组聚合任务:

  • 1. 创建一个包含类别、地区、价格和数量的DataFrame
  • 2. 按类别分组计算价格总和和数量平均值
  • 3. 按类别和地区两列进行分组分析
  • 4. 创建一个透视表展示数据
💻 作业代码提交