数据分析入门实战:老板丢来 5000 行数据,我怎么一步步算出"哪个季度卖得最好"

写作日期:2026-08-04 | 来源:数据分析学习笔记(六步流程 + Pandas 实战)
关键词:Pandas、数据清洗、groupby、透视表、数据分析流程

背景(S)

实习第一天,老板丢给我一个 CSV 文件,里面有 5000 行销售记录(日期、产品、金额),说了一句:“哪个季度卖得最好?明天汇报。”

当时的我大脑一片空白:数据分析第一步是啥?是不是先把数据算一遍?后来才发现,没有数据拿什么算——第一步是取数,而真正的坑,全在取数之后。

踩过的坑(T)

新手最容易犯的 5 个错,我一个没落:

  1. 以为第一步是"分析"——错了,第一步是取数(先有数据才能分析)。
  2. 直接对脏数据求和——5000 行里有 200 行重复记账,总销售额凭空虚高,多算 200 行的钱。
  3. 空值填 0——50 行金额是空的,填 0 把月均消费从 2000 拉低到 1900,结论全歪。
  4. sort_values 忘写 ascending=False——默认升序,卖得最好的产品在最后一行,老板从上往下看,差点把最差的当成最好的。
  5. 透视表把 index / columns 搞反——index 是行(最左边一竖列),columns 是列(表头),反了就是一张"看不懂的表"。

怎么解决的(A)

第一步:先立骨架——数据分析六步流程

取数 → 清洗 → 存储 → 分析 → 可视化 → 报告

不是五步,是六步:最后一步"报告"是图表 + 结论 + 建议——因为老板没耐心看 5000 行数字,他要的是能直接拍板的一句话。

第二步:用 Pandas 把数据读进来

import pandas as pd

df = pd.read_csv("销售记录.csv")
print(df.shape)   # (5000, 3) = 5000 行 3 列(先行后列)
print(df.head())  # 看一眼前 5 行

DataFrame 就是一张跑在内存里的 Excel 表格:列是字段(日期、产品、金额),行是记录。

第三步:清洗三件套(最重要,别跳过)

df = df.drop_duplicates()                 # ① 去重:删掉 200 行重复记账(必须重新赋值才生效!)
df = df.dropna()                          # ② 空值少:直接删行
df = df.fillna(df['金额'].mean())         # ② 空值多:填均值(填 0 会拉低均值,别用)
df = df[df['金额'] > 0]                   # ③ 过滤:金额 > 0,把异常值/退款挡在外面

清洗决定结论可信度:重复数据让总数虚高,空值填错让均值失真——不洗,分析白做。

第四步:分组聚合——"哪个季度卖得最好"的核心

# 每个季度总销售额(groupby = 按列分堆,对金额求和)
季度销售 = df.groupby('季度')['金额'].sum()
print(季度销售.sort_values(ascending=False))   # 降序,第一行就是卖得最好的季度

groupby 结构记牢:df.groupby('分组的列')['要算的列'].sum()。想同时算金额和数量,用双括号 df.groupby('产品')[['金额', '数量']].sum()

第五步:透视表——产品 × 季度交叉看

pd.pivot_table(df, values='金额', index='产品', columns='季度', aggfunc='sum')
季度       Q1    Q2    Q3    Q4
产品
奶茶     5000  6000  4000  5000
烤肠     1000  1500  1200  1300
柠檬水   2000  2200  1800  2000

一行代码同时看"哪个产品、哪个季度"——这就是 Excel 透视表的 Pandas 版,也是 groupby 的升级版(一维分组 → 二维交叉)。注意 aggfunc='sum' 一定要写,默认是 mean(平均值),会算成"平均每单",和总销售额差很远。

第六步:报告交付

图(可视化)+ 结论 + 建议。我的结论是:“奶茶 Q2 卖得最好(6000),Q3 跌到 4000,建议排查 Q3 原因,Q2 经验可复制。”

复盘(R)

  • 数据从哪来 → 怎么处理 → 给谁用:取数拿数据、清洗保可信、分析出结论、报告给决策者——这就是面试的"数据流三段式"。
  • SQL 干重活,Pandas 干细活:数据大到内存装不下(比如 3G),先 SQL 聚合压小,再读回 Pandas 分析。
  • 踩坑是最好的面试素材:面试官最爱听"我犯过错然后怎么改",这 5 个坑就是。

一句话总结(面试直接背):数据分析 = 六步流程(取数→清洗→存储→分析→可视化→报告),Pandas 三件套(drop_duplicates 去重、dropna/fillna 处理空值、df[条件] 过滤),groupby 一维分组、pivot_table 二维交叉——清洗保证结论可信,报告让老板 3 秒拍板。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐