Skip to main content

3 数据分析与可视化

数据分析与可视化主视觉

第 3 章只解决一件事:把混乱数据变成有代码可复现、有图表支撑、能讲清边界的可信结论

先看数据分析闭环

数据分析主线闭环

先看图。大多数有价值的数据分析都遵循这个闭环:

读取 -> 检查 -> 清洗 -> 统计 -> 可视化 -> 解释

不要一上来就画图。先看字段、单位、缺失值、重复数据和样本来源。

学习顺序与任务表

下面这一张表同时作为本章学习指南和任务清单。

页面跟着做留下的证据
3.1.1 纯 Python 数据处理用列表和字典处理一张小表一段说明:为什么纯 Python 处理表格会变累
3.2.1 NumPy 概览3.2.7 随机数与统计练习数组、形状、切片、广播和向量化计算一个 NumPy 练习文件
3.3.1 Pandas 核心结构3.3.8 时间序列读取表格、清洗缺失值、分组、合并并导出结果清洗后的数据和清洗记录
3.4.1 Matplotlib3.4.4 可视化最佳实践画出能回答明确问题的图表3 张图,每张配 1 条结论
3.5.1 关系型数据库3.5.4 数据库设计学会用 SQL 筛选、分组和连接真实应用数据一个查询或 join 示例
3.6.1 EDA 项目3.6.3 跟做工作坊搭建可复现的数据流水线和报告原始数据、清洗数据、图表、报告和 README

本章常见术语:

术语含义
CSV纯文本表格,每一行是一条记录
DataFramePandas 表格,有行、列、列名和索引
SeriesDataFrame 中的一列
dtype列或数组的数据类型
EDAExploratory Data Analysis,建模前的探索性数据分析
groupby按类别拆分、计算统计量、再合并结果
merge / join按共同键把多张表合并

第一个可运行闭环

先安装两个包:

python -m pip install pandas matplotlib

然后在空练习文件夹里运行下面脚本。它会创建脏数据、清洗、统计,并保存一张图。

from io import StringIO
import pandas as pd
import matplotlib.pyplot as plt

raw = StringIO("""topic,minutes
Python,45
Pandas,30
Python,45
Visualization,
Pandas,300
""")

df = pd.read_csv(raw)
print("清洗前")
print(df)

clean_df = df.drop_duplicates()
clean_df["minutes"] = clean_df["minutes"].fillna(clean_df["minutes"].median())
clean_df = clean_df[clean_df["minutes"] <= 180]

summary = clean_df.groupby("topic")["minutes"].sum().sort_values(ascending=False)
print("\n清洗后")
print(summary)

summary.plot(kind="bar", title="Study minutes by topic")
plt.ylabel("minutes")
plt.tight_layout()
plt.savefig("topic_minutes.png")
print("\n已保存图表: topic_minutes.png")

预期形态:

清洗前
...
清洗后
topic
Python 45.0
Visualization ...
已保存图表: topic_minutes.png

真正的通过标准不是“图好看”,而是你能说明:哪些行被改了,为什么改,对结论有什么影响。

常见失败

现象先检查什么常见修复
图表漂亮但结论弱是否先写清问题把问题写在图表前面
分组结果不对类别空格、别名或大小写不一致打印 unique() 并统一类别
缺失值影响结论哪些行列缺失记录规则:删除、填充或保留
相关性高得异常时间、规模、泄漏或采样偏差分组对比,并写清限制
Notebook 无法重跑数据路径、依赖或执行顺序重启后从头运行

通关检查

能回答下面五个问题,就可以进入第 4 章:

  • 每列是什么意思,单位是什么?
  • 哪些清洗规则改变了数据?
  • 每张图回答了什么问题?
  • 哪些结论有数据支持,哪些仍不确定?
  • 其他人能不能按 README 重新运行分析?

需要打印式清单时,打开 3.0 学习指南与任务单。下一章会用这些数据直觉理解概率、向量、梯度和模型评估。