课程库 › AI 主线 › 阶段项目与数学直觉 › 第 1 课
阶段项目(一):销售数据分析实战 —— 需求文档与数据集
项目课约 60 分钟
本课导读
阶段 1 大结局:一个三课连贯的完整数据分析项目(作品集第三件)。不再是练习题的迷你数据——这次是 200 行带脏的"真实体量"订单表,走完数据人的完整闭环:理解需求 → 拿到数据 → 体检清洗(本课)→ 分析可视化(下一课)→ 写成报告发布(第三课)。本课的交付物:一份干净的数据集 + 一段可复现的清洗代码。预计 60 分钟。
需求文档:先读懂再动手
委托方:某数码配件电商的运营负责人 背景:上半年(1-6 月)业务数据从没系统看过,凭感觉在跑 委托:给我一份上半年经营分析,回答四个问题—— ① 销售额的月度走势如何?② 哪些品类/产品在赚钱?③ 哪个城市是主战场?④ 客单价什么水平? 交付:能看懂的图 + 一页结论;数据口径要能说清(怎么清洗的、丢了多少)
项目课的规矩(第三次登场,已是老朋友):分版本推进、先自己写再看参考、验收清单说了算。另加一条数据项目专属:每一步的行数变化都要留脚印——委托方问"为什么总数对不上"时,你要答得出来。
第一步:拿到数据,先体检
真实项目里数据是别人给的;课程里用道具函数生成(固定种子,人人一致,方便对照)。先跑通、再体检:
✅ 体检参考 + 问题清单
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 清洗课的老对手。
第二步:清洗流水线
按标准顺序把表洗净,每步打印行数留脚印,最后把干净数据存盘(交付物之一):
💡 提示(决策点)
两处需要"业务判断":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 行左右——都对,能解释就合格。
验收清单(本课部分)
📝 随堂测验
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 的装裱功夫全部上场。
划选正文任意文字可高亮、批注或加入复习卡
讨论
载入中…