在我们掌握了从数据表中获取相关数据的方法后,我们可以直接使用数据库自带的SQL语言对这些数据进行分析,比如说:利用聚合函数(如SUM、COUNT、AVG)进行分组统计,计算关键指标等。这些能力可以帮助我们从海量数据中提取有价值的信息,支持实际工作需要,比如:数据驱动决策、深入了解用户、监控产品表现、支持模型优化,以及与数据科学家和工程师更好地协作等。
什么是聚合函数?
聚合函数用于对一组数据进行计算和汇总。常用的聚合函数包括:
SUM:计算一组数据的总和COUNT:统计数据的个数AVG:计算数据的平均值MAX:找出数据中的最大值MIN:找出数据中的最小值
例如,在销售数据分析中,我们可以用 SUM 计算总销售额,用 COUNT 统计订单数,用 AVG 得到平均订单金额。
什么是分组统计?
分组统计(Group By)是将数据按照某个或某些关键字段进行分组,然后对每个分组分别进行聚合计算。例如,在包含不同产品销售记录的数据中,可以按照“产品类别”进行分组,然后计算每个类别的总销售额和平均销售额。
这种方法能帮助管理人员清楚地了解各类别产品的表现,从而为产品优化、库存调整和市场策略提供依据。
结下我们以产品销售数据为例,展示如何利用聚合函数和分组统计来提取关键指标。
案例场景:产品销售分析
假设您有一个包含销售数据的数据库表 sales,表中包含以下字段:
- product_id:产品编号
- category:产品类别
- quantity:销售数量
- price:单价
- sale_date:销售日期
您的目标是计算每个产品类别的总销售额、订单数量以及平均订单金额,从而了解哪些产品类别表现更好。
示例 SQL 查询
利用 SQL 的聚合函数和 GROUP BY,可以编写如下查询语句:
SELECT
category,
SUM(quantity * price) AS total_sales,
COUNT(*) AS order_count,
AVG(quantity * price) AS avg_order_value
FROM sales
GROUP BY category;
这条语句的含义:
- 按
category对数据进行分组 - 使用
SUM计算每个类别的总销售额 - 使用
COUNT统计每个类别的订单数量 - 使用
AVG计算每个类别的平均订单金额
对于管理人员来说,通常我们不太会直接使用SQL命令来操作数据库。我们可以利用 Python 和 Pandas 进行聚合与分组。以下是一个用 Python 的 Pandas 库实现相同统计功能的示例:
import pandas as pd
# 假设已将 sales.csv 文件加载为 DataFrame
df = pd.read_csv('sales.csv')
# 计算每条记录的销售金额
df['sale_amount'] = df['quantity'] * df['price']
# 按产品类别分组,并计算总销售额、订单数和平均订单金额
grouped = df.groupby('category').agg(
total_sales=pd.NamedAgg(column='sale_amount', aggfunc='sum'),
order_count=pd.NamedAgg(column='sale_amount', aggfunc='count'),
avg_order_value=pd.NamedAgg(column='sale_amount', aggfunc='mean')
)
print(grouped)
- 使用
pd.read_csv读取 CSV 文件,生成 DataFrame - 新建一列
sale_amount表示每条记录的销售金额 - 使用
groupby方法按category分组,并通过agg同时计算多个聚合指标
提示词示例:
提示词:
请帮我写一段 Python 代码,要求使用 Pandas 库来处理销售数据。具体要求如下:
- 读取数据:
- 从文件 sales.csv 读取数据,并将其加载为一个 DataFrame。
- 计算销售金额:
- 假设数据中包含 quantity(销售数量)和 price(单价)两个字段。
- 新增一列 sale_amount,其值为 quantity 与 price 的乘积,即每条记录的销售金额。
- 总销售额: 使用 sum 函数计算 sale_amount 的总和。
- 订单数: 使用 count 函数统计 sale_amount 的记录数量。
- 平均订单金额: 使用 mean 函数计算 sale_amount 的平均值。
- 输出结果:
- 最后打印出分组统计后的结果。
练习:
在之前课程中,您已创建了 feedback 和 products 两个数据表,并使用 INNER JOIN 实现了反馈与产品信息的关联查询。现在,我们希望通过聚合函数和子查询,对两张表的数据进行更深入的统计和筛选。
任务要求:
- 多表聚合统计:
- 关联
feedback表和products表,统计每款产品的反馈总数、平均反馈评分。 - 分组后计算每款产品的各反馈类别的数量分布,例如,功能建议、Bug报告、性能问题各自的数量。
- 关联
- 利用子查询筛选数据:
- 通过子查询计算出所有反馈的平均评分,然后筛选出反馈评分高于该平均值的记录,并显示对应产品的名称、价格及反馈详细信息。
- 或者,统计出反馈次数超过整体平均反馈次数的产品信息。
请设计相应的提示词,完成代码输出。
AI 助教
提示:您可在此提出学习中遇到的问题。回答由 AI 生成,可能存在错误,请注意甄别。
