学径XUEJING · 个人学习平台通知设置

课程库 AI 主线 阶段项目与数学直觉 › 第 2

阶段项目(二):分析与可视化 —— 分步引导

项目课75 分钟

本课导读

数据洗净了,今天回答委托方的四个问题——每问一张图,每图一个结论。本课与之前所有课的区别:提示只给方向,代码主要靠你写(参考实现折叠在后面)。这是有意的——作品集项目的含金量,取决于你独立完成的比例。预计 75 分钟。

第零步:重建道具(先运行这一块)

本课各块共用同一份干净数据。先运行这块生成 sales_clean.csv(内容与上一课交付一致),之后每块直接读它;中途刷新过页面就回来重跑一次:

Python

问题一:销售额月度走势如何?

分析动作:按 month 分组求 amount 合计 → 折线图。装裱要求:数据点标记、结论式标题(先看数字再想标题)、y 轴单位、淡网格。

Python
✅ 问题一参考
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("sales_clean.csv")

monthly = df.groupby("month")["amount"].sum()

fig, ax = plt.subplots(figsize=(6.5, 3.2))
ax.plot(monthly.index, monthly.values, marker="o", linewidth=2)
ax.set_title("销售额逐月攀升,6 月冲上半年峰值")
ax.set_xlabel("月份")
ax.set_ylabel("销售额(元)")
ax.grid(axis="y", alpha=0.3)
ax.set_ylim(0, None)

图型:时间+变化=折线(口诀第一条)。你的标题不必一字一样,但必须带结论——看着上扬的线写《月度销售额》属于浪费标题位。

问题二:哪些品类/产品在赚钱?

分析动作:两层——先 category 汇总看大盘,再 product 排名找主力。装裱要求:产品排名用横向 barh、升序排(冠军在顶)、只给冠军上强调色、柱端标数值。

Python
✅ 问题二参考
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("sales_clean.csv")

print(df.groupby("category")["amount"].sum().sort_values(ascending=False))

by_product = df.groupby("product")["amount"].sum().sort_values()   # 升序
colors = ["#c9cdd4"] * len(by_product)
colors[-1] = "#e8734a"

fig, ax = plt.subplots(figsize=(6.5, 3.5))
ax.barh(by_product.index, by_product.values, color=colors)
ax.bar_label(ax.containers[0], fmt="%.0f")
ax.set_title("显示器与旗舰键盘扛起大盘,配件类存在感弱")
ax.set_xlabel("销售额(元)")

一次分析两层视角(品类大盘 + 产品明细)——委托方问"谁在赚钱"时,两层答案比一层专业。

问题三:哪个城市是主战场?

分析动作:city 汇总。你自己选图型(提示:5 个类别、比较类问题——上单元第一课的口诀)。另加一问:用 value_counts(normalize=True) 看订单量占比,和金额排名一致吗?

Python
✅ 问题三参考
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("sales_clean.csv")

by_city = df.groupby("city")["amount"].sum().sort_values(ascending=False)

fig, ax = plt.subplots(figsize=(6, 3))
ax.bar(by_city.index, by_city.values)
ax.bar_label(ax.containers[0], fmt="%.0f")
ax.set_title("城市销售额分布")
ax.set_ylabel("销售额(元)")

print(df["city"].value_counts(normalize=True).round(2))

选型:类别比较 → 柱状(5 个类别也可以饼图看占比,能说出理由就都对)。金额排名和单量占比若有出入(某城市单少但客单高),那本身就是个值得写进报告的发现。

问题四:客单价什么水平?

分析动作:amount 列整体统计 + 分布。装裱要求:直方图 + 在标题里报出平均值/中位数两个数。

Python
✅ 问题四参考
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("sales_clean.csv")

avg = df["amount"].mean()
med = df["amount"].median()

fig, ax = plt.subplots(figsize=(6.5, 3.2))
ax.hist(df["amount"], bins=12)
ax.set_title(f"客单价均值 {avg:.0f} 元、中位数 {med:.0f} 元——低价单为主,高价单拉高均值")
ax.set_xlabel("订单金额(元)")
ax.set_ylabel("订单数")

均值明显高于中位数 = 分布右侧有长尾(少量高价大单拉高了平均)——均值和中位数打架时,两个都报,只报均值会误导委托方。

验收清单(本课部分)

分步操作

📝 随堂测验

随堂测验0 / 5 题正确

1. “每问一张图,每图一个结论”这个工作方式,防的是什么病?

2. 产品排名图为什么升序排、又只给一根柱子上色?

3. 客单价均值 400、中位数 250,说明什么、怎么报告?

4. 问题三里金额排名第一的城市和订单量占比第一的城市不一致,应该?

5. 本课的代码为什么坚持“提示给方向、代码自己写”?

本课小结

  • 四问四答齐了:走势折线(逐月攀升)、产品排名(双层视角)、城市分布、客单价直方(均值中位数背离)
  • 装裱清单在真实项目全程执行:结论标题、排序、强调色、数值标注
  • 学会捕捉"数字里的意外"——那是报告里最值钱的段落

最后一课:把四图四结论组装成一页正式报告,配上口径说明,推上 GitHub——作品集第三件,收工。

划选正文任意文字可高亮、批注或加入复习卡

讨论

载入中…