行者孙Python

烹制篇-Day24|厨房实战 Kata:综合数据分析:分组 + 聚合 + 透视出一份结论

📖 知识点回顾

  1. groupby() 分组统计

  2. agg() 多指标聚合(sum/mean/count)

  3. pivot_table() 数据透视表

  4. value_counts() 频次、占比

  5. sort_values() 排序找极值

  6. corr() 相关分析

💡 分析流程(标准套路)看概览 → 频次统计(分布)→ 分组聚合(各组总量 / 均值)→ 透视(交叉维度)→ 排序找极值 → 相关(找关系)→ 汇总结论

⚔️ Kata 实战任务

任务需求:

  1. 导入 pandas,创建一份 "菜系 × 时段销售" 数据(含菜系、时段、菜名、销量、价格)

  2. 用 value_counts() 统计各菜系占比

  3. 用 groupby + agg 计算各菜系销量总和、均值、菜品数量

  4. 用 pivot_table 生成菜系 (行)× 时段 (列) 的销量透视表

  5. 用 sort_values 找销量最高的菜系

  6. 汇总打印一份 "分析结论"

参考代码

 

import pandas as pd

data = {
    "菜系": ["川菜", "川菜", "川菜", "鲁菜", "鲁菜", "粤菜", "粤菜", "粤菜"],
    "时段": ["午餐", "晚餐", "午餐", "午餐", "晚餐", "午餐", "晚餐", "午餐"],
    "菜名": ["麻婆豆腐", "回锅肉", "水煮鱼", "葱爆羊肉", "糖醋鱼", "白切鸡", "叉烧", "烧鹅"],
    "销量": [60, 80, 50, 40, 55, 30, 20, 45],
    "价格": [20, 25, 28, 35, 40, 30, 26, 32],
}
df = pd.DataFrame(data)

print("===== 1. 各菜系占比 =====")
print(df["菜系"].value_counts(normalize=True).round(3))

print("\n===== 2. 各菜系销量聚合(总和/均值/数量)=====")
print(df.groupby("菜系")["销量"].agg(["sum", "mean", "count"]))

print("\n===== 3. 透视表:菜系(行) × 时段(列) =====")
print(df.pivot_table(values="销量", index="菜系", columns="时段", aggfunc="sum"))

print("\n===== 4. 销量最高的菜系 =====")
top = df.groupby("菜系")["销量"].sum().sort_values(ascending=False)
print(top)

# ===== 汇总结论 =====
print("\n===== 📝 分析结论 =====")
best = top.index[0]
print(f"1. 销量最高的菜系是「{best}」")
print(f"2. 「{best}」全天销量为 {top.iloc[0]},占比较突出")
print("3. 结合透视表可进一步看出午/晚餐的销量差异")

 

运行输出:

===== 1. 各菜系占比 =====
川菜    0.375
粤菜    0.375
鲁菜    0.250
Name: 菜系, dtype: float64

===== 2. 各菜系销量聚合(总和/均值/数量)=====
      sum  mean  count
菜系
川菜  190  63.33      3
鲁菜   95  47.50      2
粤菜   95  31.67      3

===== 3. 透视表:菜系(行) × 时段(列) =====
时段   午餐   晚餐
菜系
川菜   110    80
鲁菜    40    55
粤菜    75    20

===== 4. 销量最高的菜系 =====
川菜    190
鲁菜     95
粤菜     95
Name: 销量, dtype: int64

===== 📝 分析结论 =====
1. 销量最高的菜系是「川菜」
2. 「川菜」全天销量为 190,占比较突出
3. 结合透视表可进一步看出午/晚餐的销量差异

 

🧠 思考题

  1. 综合流程里,value_counts(占比)、groupby+agg(总量)、pivot_table(交叉)分别回答了哪类分析问题?

  2. 如果要把这份分析结果画成图表(如柱状图看各菜系销量),该选哪些数据?下一篇章要学可视化,猜猜该用哪个方法?

‹ 返回目录
🏠首页 Python 📦资源 👤关于我