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

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

阶段项目(一):销售数据分析实战 —— 需求文档与数据集

项目课60 分钟

本课导读

阶段 1 大结局:一个三课连贯的完整数据分析项目(作品集第三件)。不再是练习题的迷你数据——这次是 200 行带脏的"真实体量"订单表,走完数据人的完整闭环:理解需求 → 拿到数据 → 体检清洗(本课)→ 分析可视化(下一课)→ 写成报告发布(第三课)。本课的交付物:一份干净的数据集 + 一段可复现的清洗代码。预计 60 分钟。

需求文档:先读懂再动手

委托方:某数码配件电商的运营负责人 背景:上半年(1-6 月)业务数据从没系统看过,凭感觉在跑 委托:给我一份上半年经营分析,回答四个问题—— ① 销售额的月度走势如何?② 哪些品类/产品在赚钱?③ 哪个城市是主战场?④ 客单价什么水平? 交付:能看懂的图 + 一页结论;数据口径要能说清(怎么清洗的、丢了多少)

项目课的规矩(第三次登场,已是老朋友):分版本推进、先自己写再看参考、验收清单说了算。另加一条数据项目专属:每一步的行数变化都要留脚印——委托方问"为什么总数对不上"时,你要答得出来。

第一步:拿到数据,先体检

真实项目里数据是别人给的;课程里用道具函数生成(固定种子,人人一致,方便对照)。先跑通、再体检

Python
✅ 体检参考 + 问题清单
import pandas as pd

df = pd.read_csv("sales_raw.csv")   # 道具文件由上方 Playground 生成

df.info()               # price 是 object(有脏值);qty 有缺失
print(df.describe())
print(f"行数 {len(df)},重复 {df.duplicated().sum()} 行")
print(df["city"].value_counts())   # “ 上海 ”分裂出独立一组

体检结论(对照你的发现):207 行(200+7 重复);price 混入"补录中"被拖成字符串;qty 缺 6 个左右;city 有带空格的分裂值;order_id/month 正常。四种脏一个不少——都是 U1.5 清洗课的老对手。

第二步:清洗流水线

按标准顺序把表洗净,每步打印行数留脚印,最后把干净数据存盘(交付物之一):

Python
💡 提示(决策点)

两处需要"业务判断":price 是"补录中"的行(金额未知,算不了账 → 删,但要报数量);qty 缺失的行(可以删,也可以按"最少买 1 件"补 1——两种都算对,报告里说明即可)。最后记得 df["amount"] = df["price"] * df["qty"],下一课全靠它。

✅ 清洗参考实现
import pandas as pd

df = pd.read_csv("sales_raw.csv")   # 道具文件由上方 Playground 生成
print(f"原始 {len(df)} 行")

df = df.drop_duplicates()
print(f"去重后 {len(df)} 行")

df["price"] = pd.to_numeric(df["price"], errors="coerce")
df["city"] = df["city"].str.strip()

df = df.dropna(subset=["price"])
print(f"剔除金额未知后 {len(df)} 行")

df["qty"] = df["qty"].fillna(1)          # 决策:至少买 1 件(报告中说明)
df["amount"] = df["price"] * df["qty"]

df.to_csv("sales_clean.csv", index=False)
print(f"交付:sales_clean.csv,共 {len(df)} 行,总销售额 {df['amount'].sum():.0f} 元")

脚印应为 207 → 200 → 195 行。你的 qty 策略若选了 dropna 则是 189 行左右——都对,能解释就合格

验收清单(本课部分)

分步操作

📝 随堂测验

随堂测验0 / 5 题正确

1. 动手写代码前先读需求文档,最重要的产出是?

2. “每一步打印行数留脚印”是为了?

3. price 为“补录中”的 5 行选择删除,qty 缺失选择补 1——这两个决策的共同点是?

4. 道具函数里 random.seed(7) 和 random_state=1 这些固定种子,在真实项目里对应什么原则?

5. 本课交付的 sales_clean.csv 里为什么要先算好 amount 列?

本课小结

  • 项目闭环第一段完成:需求四问 → 生成数据 → 三板斧体检 → 流水线清洗 → 干净数据集落盘
  • 两条项目铁律:行数脚印可审计、清洗决策报告里说明
  • 交付物:sales_clean.csv(195 行 ±,含 amount)+ 可复现的清洗代码

下一课拿着干净数据回答四个业务问题——每问一张图,U1.6 的装裱功夫全部上场。

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

讨论

载入中…