第 3 课
pandas 与金融数据初加工
人工智能程序设计与实践 · 2026 年秋季学期 · 自学周②③ 10/2 国庆—10/8 收心
手机扫码 · 打开本课幻灯片
扫码或访问 aip-2026f.dev-learn-hub.me/a3 → 输入上方口令 → 在自己设备上同步看幻灯片
本课为自学周,幻灯片全程开放至 10/8 24:00
← 左右滑动翻页 →
本课你将完成什么
1DataFrame 心智模型 — 理解 pandas 的"超级 Excel 表"
2数据集四连 — 读取 → 缺失处理 → 分组统计 → 可视化
3第一张分析图 — bank_customers.csv 六城平均余额柱状图
4可复现能力 — 代码再跑一遍,结果一致(期末项目地基)
你手里的资源
实践指南三《pandas 与数据初加工》
本课学习主线:概念地图、分日任务书、速查表、红线。本页幻灯片只讲做什么,怎么做看指南。
本课幻灯片
扫码进入(口令在班级群公布),自学周期间全程开放
统一数据集
bank_customers.csv(200 行)+ DATA_DICT.md 字段字典。下载入口在幻灯片最后一页
llm2-isc 校内平台
遇到不懂的概念直接问 AI——附上你的提问与 AI 回答到学习笔记
本课知识体系
①心智模型 — DataFrame = 超级 Excel 表
▼
②四连动作 — 读取 → 缺失处理 → 分组统计 → 可视化
▼
③可复现能力 — 代码再跑一遍,数据更新结果自动更新
主线先建立表格心智(DataFrame),再练四连动作(读/洗/分组/画),最后体会可复现——这是第三章数据挖掘全部工作的地基
① pandas 是什么
一句话
pandas 把你的数据变成一张"超级 Excel 表"(DataFrame),然后你可以用代码对它做 Excel 做不到的事:
核心对象
- Series:一列数据(带索引)
- DataFrame:多列拼成的表——行索引 + 列名,本课的主角
为什么用代码而不是 Excel你上周的分析,这周数据更新了——Excel 要重做,代码再跑一遍。这就是"可复现",也是你期末项目的过程证据基础
② 统一数据集介绍
bank_customers.csv(200 行)
| 字段 |
含义 |
| customer_id |
客户编号 |
| age |
年龄 |
| gender |
性别 |
| city |
城市(云南6城) |
| account_age_months |
开户月数 |
| product_count |
持有产品数 |
| balance |
存款余额(元) |
| avg_monthly_spend |
月均消费(元) |
| loan_flag |
是否有贷款 0/1 |
| overdue_count |
历史逾期次数 |
| is_default |
是否违约 0/1 |
| risk_level |
风险评级(低/中/高) |
使用红线
本数据集为教学演示虚构数据,非真实统计。
字段名已冻结——作业中引用的字段名必须与此完全一致(评价系统会校验)。
金融场景这是本课金融场景的第一次落地——银行客户数据,将贯穿第三章全部数据挖掘工作
本周节奏:4 个任务日
P110/3 · 读入与初识 — pd.read_csv + 三连(head/info/describe)
P210/4 · 列选择与条件筛选 — 布尔索引 + value_counts
P310/5 · 缺失值处理 — isna/dropna/fillna 三策略
P410/6 或假期自定 · 分组统计与可视化 — groupby + matplotlib(10/8 前完成)
节奏约定每日上午在评价系统查看当日任务,晚 24:00 前完成提交。P4 最迟 10/8 24:00 前完成
P1 · 读入与初识
学习:让 TRAE CODE 讲解并生成代码
text
我在学 pandas。请生成一个入门脚本 read_data.py:
1. 用 pd.read_csv 读入 bank_customers.csv
2. 依次输出 df.head()、df.info()、df.describe()
3. 每步配中文注释解释这三个方法分别在看什么
任务
跑通脚本;在 notes/pandas-notes.md 用自己的话回答"三连各看什么":
- head 看前 5 行长啥样
- info 看列类型和缺失
- describe 看数值分布概要
检查点评价系统检测 read_data.py 存在、运行成功、notes 有三行答案
P2 · 列选择与条件筛选
布尔索引
df[df['age'] > 40] 意思是"表里那些年龄大于 40 的行"。
任务:写 filter.py
- 筛选昆明客户
- 筛选"余额>10万 且 有贷款"的客户,输出人数
- 按 risk_level 分组数人数(
value_counts())
检查点
三个输出数值正确(评价系统基准答案 hash 校验逻辑一致性)
故意实验
df[df.age > 40] 与 df['age']>40 单独运行分别输出什么?为什么?记录到笔记——理解"布尔掩码"是 pandas 的关键一跃
P3 · 缺失值处理
学习
df.isna().sum() 逐列数缺失
- 处理三策略:
- 删(dropna)
- 填(fillna,本数据用中位数填 age、用"未知"填 city)
- 标记(加一列缺失指示)
任务:写 clean.py
- 统计缺失并输出
- 按上述策略填补
- 输出处理后再统计(应全为 0)
检查点处理前后缺失统计对比输出清晰。金融数据中缺失值处理是合规性第一步——脏数据进,脏模型出
P4 · 分组统计与可视化
任务:写 report.py
- 按 city 分组计算 balance 均值
- 柱状图展示六城平均余额
age 直方图看年龄分布
- 图保存为
outputs/city_balance.png 提交
指令示范
text
用 pandas+matplotlib 分析 bank_customers.csv:
- 按城市分组计算存款余额平均值,画柱状图
(标题、轴标签中文)
- 解决中文显示乱码
(plt.rcParams['font.sans-serif']
=['SimHei'] 或 macOS 用 'Arial Unicode MS')
- 保存为 outputs/city_balance.png
检查点PNG 图提交到仓库,图中六城柱高与 groupby 数值一致。这是你第一张数据分析图
自主实践任务
每日任务P1-P4 每日提交,评价系统自动判定
自主实践①再加一图:gender × risk_level 交叉统计热力图或分组柱状图 ②describe 输出里"std"是什么意思,用一句人话+一个例子写进笔记
独立研究①agg 还能怎么用,再举两种 ②sort_values 怎么按多列排序(先 city 升序再 balance 降序) ③pandas 的 loc 和 iloc 区别,各写一个例子
另50 道选择题当周完成,成绩单独记录
红线
红线 1不改动 data/ 下的数据文件(评价系统校验 hash;分析产物放 outputs/)
红线 2分析脚本中引用字段名与 DATA_DICT 完全一致
红线 3每图每结论注明"教学虚构数据"
S3 思政落点数据求实——以原始数据为准,不篡改、不编造、不隐瞒缺失,是金融从业者的底线
速查表
| 需求 |
代码 |
| 读 CSV |
df = pd.read_csv('bank_customers.csv') |
| 三连 |
df.head() / df.info() / df.describe() |
| 选列 |
df['age'] 或 df[['age','balance']] |
| 筛选 |
df[(df['age']>40) & (df['loan_flag']==1)] |
| 数缺失 |
df.isna().sum() |
| 填补 |
df['age'].fillna(df['age'].median()) |
| 需求 |
代码 |
| 分组 |
df.groupby('city')['balance'].mean() |
| 计数 |
df['risk_level'].value_counts() |
| 画柱 |
df.plot(kind='bar') |
| 画直方 |
df['age'].plot(kind='hist') |
| 存图 |
plt.savefig('outputs/x.png') |
注意筛选条件中 & 两侧必须加括号——这是初学者最常踩的坑
求助阶梯
1实践指南对应部分 — 概念地图 + 分日任务书 + 速查表
2llm2-isc 概念答疑 — 不懂的 pandas 概念直接问 AI
3TRAE CODE 生成代码 — 指令示范已在任务书里,照抄即可
4班级群 / 评价系统 — 教师每天上午答疑一次
按此顺序前三步能解决绝大多数问题。卡住超过 30 分钟就发班级群
现在,开始你的自学周
① P1 · 读入与初识 — pd.read_csv + 三连
② P2-P3 · 筛选与缺失 — 布尔索引 + fillna 三策略
③ P4 · 分组可视化 — groupby + matplotlib 第一张图
10/3 上午 9:00评价系统发布 P1 任务。实践指南 → llm2-isc → TRAE CODE → 班级群。10/8 24:00 前完成全部 4 个任务日