文章

Python 教程拆解索引 · 06:数据分析与机器学习

#254 · 2026-05-13 · Python 教程拆解

说明:本文基于 Day66-80/Day81-90/ 做原创教学整理,不复写原教程内容。

系列导航05 数据采集|06 数据智能|07 收官与延展

本篇对应材料66.数据分析概述.md70-74.Pandas的应用*.md75-76.数据可视化*.md81.人工智能和机器学习概述.md82.k最近邻分类.md

定位更正:这一页不再承担“大而全的数据教程”,而只做专题入口。Pandas、kNN、可视化、回归、聚类这些都应该拆开讲。

本章细教程

已经拆开的源文件

原仓库文件 主题 教程
Day66-80/70.Pandas的应用-1.md DataFrame 读表、清洗、分组、透视 06A
Day81-90/82.k最近邻分类.md kNN 距离、投票、k 值 06B

下一批应该继续拆的文件

  • Day66-80/68.NumPy的应用-1.md
  • Day66-80/75.数据可视化-1.md
  • Day66-80/77.概率统计基础.md
  • Day66-80/79.相关和回归.md
  • Day81-90/83.决策树.md
  • Day81-90/86.K-均值聚类.md

这部分如果只是讲“NumPy 很重要,Pandas 很重要,机器学习要理解流程”,那还是废话。

所以今天直接做一个从数据表到最小模型的实战。

今天你要做出的结果

  1. 用 Pandas 读入小数据集;
  2. 做一次最基本的数据清洗和统计;
  3. 用 scikit-learn 训练一个最小分类模型。

Step 1:准备依赖

mkdir -p practice/day06
cd practice/day06
python -m venv .venv
source .venv/bin/activate
pip install pandas scikit-learn

Step 2:准备一个小 CSV

新建 practice/day06/sales.csv

day,visitors,orders,is_promo
1,120,12,1
2,98,7,0
3,135,15,1
4,80,4,0
5,160,22,1
6,90,5,0

Step 3:先做分析,不要急着建模

新建 practice/day06/analyze.py

import pandas as pd


df = pd.read_csv("sales.csv")
df["conversion_rate"] = df["orders"] / df["visitors"]

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

print("平均访客数:", df["visitors"].mean())
print("平均下单数:", df["orders"].mean())
print("平均转化率:", round(df["conversion_rate"].mean(), 4))
print()

print("按活动分组后的平均下单数:")
print(df.groupby("is_promo")["orders"].mean())

运行:

python analyze.py

这一步就是 Day66-80 的核心:先看懂数据,再谈模型。

Step 4:再做一个最小分类任务

现在把问题改成:根据访客数和是否活动,判断“订单是否高于 10”。

新建 practice/day06/model_demo.py

import pandas as pd
from sklearn.tree import DecisionTreeClassifier


df = pd.read_csv("sales.csv")
df["target"] = (df["orders"] > 10).astype(int)

X = df[["visitors", "is_promo"]]
y = df["target"]

model = DecisionTreeClassifier(max_depth=2, random_state=42)
model.fit(X, y)

sample = [[110, 0], [150, 1]]
pred = model.predict(sample)

print("预测结果:", pred.tolist())

运行:

python model_demo.py

你现在就完成了一条最小闭环:

  1. 读数据;
  2. 造特征;
  3. 定义目标;
  4. 训练模型;
  5. 预测新样本。

为什么这一步比空讲算法有用

因为大多数人卡住的地方根本不是“什么是决策树”,而是:

  • 数据怎么读进来;
  • 目标列怎么定义;
  • 特征列怎么选;
  • 预测时输入长什么样。

只要这几步你亲手走过一次,后面看 kNN、SVM、回归、KMeans 才会有抓手。

继续往前,你可以怎么练

往分析侧走

  • sales.csv 增加缺失值;
  • 练习清洗;
  • 练习分组统计和透视;
  • 补图表。

往机器学习侧走

  • 把决策树换成 KNeighborsClassifier
  • 把分类目标改成回归目标;
  • 增加训练集 / 测试集拆分。

本篇练习

  1. 新增一列 avg_order_value,自己编一点数据。
  2. 尝试用 train_test_split 划分训练集和测试集。
  3. 把模型换成 kNN,观察输出变化。

常见坑

  • 坑 1:刚开始就想上深度学习。 数据分析地基没打稳,很快会虚。
  • 坑 2:只会调库,不知道目标列是什么。 这时模型训练几乎没有意义。
  • 坑 3:连分析和建模的边界都没分清。 先理解,再建模。

上一篇Python 教程拆解 · 05:网络数据采集
下一篇Python 教程拆解 · 07:项目交付、工具链与表达