文章

Python 首批细教程 · 06A:用 Pandas 做一次真正的数据清洗和统计

#275 · 2026-05-13 · Python 教程拆解
Reading Path / PYTHON 先抓主张,再转成行动 #275 · Python 教程拆解 · 读完进入产品或下一篇

承上启下:在上一篇《Python 首批细教程 · 05A:别一上来就爬站,先把 requests、XPath、BS4 这条链跑通》中,我们通过抓取与解析的解耦,实现了互联网非结构化数据的落地。但海量的原始数据若包含空值、缺失或噪声,直接使用则无法体现其商业价值。本篇中,我们将进入数据智能与分析阶段,利用业界流行的数据分析利器 pandas 库,从读取 CSV、缺失值清洗,一路跑通多维分组聚合(groupby)与透视表(pivot_table)的经典报表开发链路。

对应原仓库66.数据分析概述.md70.Pandas的应用-1.md

已提供可运行示例/tutorial-assets/python-100-days/06a-pandas-clean-report/(站点源码路径:blog-src/static/tutorial-assets/python-100-days/06a-pandas-clean-report/

Pandas 真正值钱的不是 DataFrame 这个名词,而是:你能不能把一张乱表快速清干净,再给出统计结果。

准备数据

示例目录已经提供 sales.csv(站点源码路径:blog-src/static/tutorial-assets/python-100-days/06a-pandas-clean-report/sales.csv):

shop,category,amount
A,水果,120
A,零食,80
B,水果,150
B,零食,
C,水果,90
C,零食,110

Step 1:读表

import pandas as pd

df = pd.read_csv("sales.csv")
print(df)

Step 2:检查缺失值

print(df.isna().sum())

这里你会发现 amount 有一个空值。

Step 3:填补缺失值

df["amount"] = df["amount"].fillna(0)
print(df)

Step 4:做分组统计

report = df.groupby("category")["amount"].sum()
print(report)

输出类似:

category
水果    360.0
零食    190.0
Name: amount, dtype: float64

Step 5:按门店做透视

pivot = df.pivot_table(
    index="shop",
    columns="category",
    values="amount",
    aggfunc="sum",
    fill_value=0
)
print(pivot)

这一步就是从“数据表”过渡到“业务视图”。

完整脚本

示例目录已经提供 pandas_report.py(站点源码路径:blog-src/static/tutorial-assets/python-100-days/06a-pandas-clean-report/pandas_report.py):

import pandas as pd

df = pd.read_csv("sales.csv")
df["amount"] = df["amount"].fillna(0)

print("=== 原始数据 ===")
print(df)
print()

print("=== 按品类汇总 ===")
print(df.groupby("category")["amount"].sum())
print()

print("=== 门店 x 品类透视表 ===")
print(
    df.pivot_table(
        index="shop",
        columns="category",
        values="amount",
        aggfunc="sum",
        fill_value=0
    )
)

进阶任务

  1. 增加一列 day,按天统计。
  2. 增加异常值,比如 -100,自己决定怎么清洗。
  3. 输出 amount 的均值、最大值、最小值。

常见坑

  • fillna(0) 后忘了重新赋值。
  • groupby 之后不知道返回的是 Series 还是 DataFrame
  • 明明是分析问题,却一上来就想训练模型。

💡 下一篇预告:借助 Pandas,我们完成了基础的数据清洗与多维报表分析,获得了清晰的业务概览视图。但在真正的数据科学与数据智能应用中,从统计学报表迈向机器学习预测才是关键性飞跃。在下一篇《Python 首批细教程 · 06B:用一个小例子彻底看懂 kNN 怎么分类》中,我们将走近经典的监督学习算法,使用 scikit-learn 编写一个极简的 k 近邻(kNN)电影分类预测系统,彻底理清模型训练与分类决策的基本原理。