数据分析

在我们掌握了从数据表中获取相关数据的方法后,我们可以直接使用数据库自带的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 同时计算多个聚合指标
现在,我们通常不需要直接编写代码,但理解代码逻辑十分重要。它让我们可以更精准有效地撰写提示词。同样我们可以用提示词让AI大模型帮我编写代码。

提示词示例:

提示词:

请帮我写一段 Python 代码,要求使用 Pandas 库来处理销售数据。具体要求如下:

  1. 读取数据:
    • 从文件 sales.csv 读取数据,并将其加载为一个 DataFrame。
  2. 计算销售金额:
    • 假设数据中包含 quantity(销售数量)和 price(单价)两个字段。
    • 新增一列 sale_amount,其值为 quantity 与 price 的乘积,即每条记录的销售金额。
      • 总销售额: 使用 sum 函数计算 sale_amount 的总和。
      • 订单数: 使用 count 函数统计 sale_amount 的记录数量。
      • 平均订单金额: 使用 mean 函数计算 sale_amount 的平均值。
  3. 输出结果:
    • 最后打印出分组统计后的结果。

掌握聚合函数与分组统计不仅可以帮助我们在数据库中快速提取关键数据,还能提高数据处理的效率和准确性。对于AI产品经理来说,掌握这些方法可以让您直接从大量数据中抽取核心指标,不仅可以实时了解产品表现和用户行为,而不必依赖于导出CSV后再用其他工具手动处理。还能再次基础上使用Python做更复杂的数据处理。从而让我们更快地发现数据背后的真相。

练习:

在之前课程中,您已创建了 feedbackproducts 两个数据表,并使用 INNER JOIN 实现了反馈与产品信息的关联查询。现在,我们希望通过聚合函数和子查询,对两张表的数据进行更深入的统计和筛选。

任务要求:

  1. 多表聚合统计:
    • 关联 feedback 表和 products 表,统计每款产品的反馈总数、平均反馈评分。
    • 分组后计算每款产品的各反馈类别的数量分布,例如,功能建议、Bug报告、性能问题各自的数量。
  2. 利用子查询筛选数据:
    • 通过子查询计算出所有反馈的平均评分,然后筛选出反馈评分高于该平均值的记录,并显示对应产品的名称、价格及反馈详细信息。
    • 或者,统计出反馈次数超过整体平均反馈次数的产品信息。

请设计相应的提示词,完成代码输出。

AI 助教

提示:您可在此提出学习中遇到的问题。回答由 AI 生成,可能存在错误,请注意甄别。