文章目录

  • 章节教学分析
  • 课时定位
  • 教学目标(知识、能力、素养)
  • 重点难点分析
  • 教学过程(导入→讲授→案例→总结)
  • 知识点详细展开
  • 课堂案例
  • 实验编号
  • 实验目的
  • 实验环境
  • 实验原理
  • 实验步骤
  • 完整代码
  • 实验结果
  • 结果分析
  • 课堂讨论问题
  • 课后作业

同时,实验会统一编号,例如:

编号 实验名称 对应课时
实验1 数据类型识别实验 第1课时
实验2 Excel/CSV/JSON/XML格式读取实验 第2课时
实验3 Requests网页数据获取实验 第3课时
实验4 BeautifulSoup网页解析实验 第4课时
实验5 Pandas文件读写实验 第5课时
实验6 JSON/XML数据处理实验 第6课时
实验7 Python数据库操作实验 第7课时
实验8 批量文本抽取综合实战 第8课时

《Python数据预处理》

第二章 数据获取与存储

第1课时教学设计

主题:

常见的数据类型与数据格式认识


一、课程基本信息

项目 内容
章节 第二章 数据获取与存储
课时 第1课时
主题 认识不同类型的数据
教学方式 理论讲授+案例分析+实验
实验编号 实验1

二、本课教学目标

(一)知识目标

学生能够:

1. 理解数据分类的意义

在实际数据处理中,不同来源的数据具有不同形式。

例如:

企业销售系统:

商品编号
商品名称
销售数量
销售金额

属于:

结构化数据。

而:

用户评论
商品图片
宣传视频

属于:

非结构化数据。

如果不能正确识别数据类型,就无法选择合适的数据获取、存储和处理方法。


2. 掌握三类数据类型

本节重点:

  • 结构化数据;
  • 半结构化数据;
  • 非结构化数据。

教材指出:

按照数据类型分类,大数据领域主要包括:

结构化数据、半结构化数据和非结构化数据三类。


(二)能力目标

学生能够:

  1. 判断实际数据属于哪种类型;
  2. 根据数据特点选择存储方式;
  3. 理解不同数据类型的数据处理方法。

(三)素养目标

培养学生:

  • 数据分类意识;
  • 数据管理意识;
  • 数据工程思维。

让学生认识:

数据处理不是从算法开始,而是从认识数据开始。


三、教学重点与难点

(一)教学重点

重点1:结构化数据

理解:

为什么Excel表格、数据库属于结构化数据。


重点2:半结构化数据

理解:

为什么JSON既不像数据库表格,又不是完全无规则的数据。


重点3:不同数据类型的处理方式

例如:

数据 处理工具
Excel Pandas
CSV Pandas/csv
JSON json库
图片 OpenCV
文本 NLP工具

(二)教学难点

难点1:

学生容易认为:

“只要是数据,全部都可以放Excel。”

实际上:

Excel适合二维结构数据。

但是:

一张照片:

包含:

  • 像素矩阵;
  • 颜色信息;
  • 文件属性。

无法简单转换为:

姓名—年龄—成绩形式。


难点2:

理解半结构化数据。

例如:

学生信息:

传统数据库:

姓名 年龄 专业
张三 20 计算机

但是学生简历:

{
"name":"张三",
"skill":["Python","Java"],
"project":{
"name":"AI系统"
}
}

字段数量可能变化。

因此:

属于半结构化。


四、教学导入(10分钟)

案例:

某电商平台每天产生的数据:

1. 用户订单

订单编号
用户ID
商品ID
价格
时间

2. 用户评价

这个手机很好用
物流速度快

3. 商品图片

手机.jpg

4. 商品详情接口

{
"name":"手机",
"price":3999
}

提问:

这些数据能否使用同一种方式保存?

学生讨论。

教师总结:

不能。

因为数据结构不同。

引入:

数据分类。


五、知识讲授

5.1 数据分类概念

什么是数据分类?

数据分类:

就是按照数据的属性和特点,将具有相同特征的数据归为同一类别。

目的:

方便:

  • 查询;
  • 管理;
  • 分析;
  • 存储。

教材指出:

数据分类是将具有相同属性或特征的数据归集分类,方便查询、识别、管理和使用。


5.2 结构化数据

(1)概念

结构化数据:

也称:

行数据。

特点:

具有固定的数据结构。

通常表现为:

二维表。

例如:

学生信息:

ID 姓名 性别 年龄
1 李明 12
2 张千 13

教材中给出了员工信息、学生信息等二维表示例。


(2)结构化数据特点

① 数据格式固定

例如:

员工表:

必须包含:

员工编号
姓名
部门
工资

新增字段:

需要修改表结构。


② 存储规则明确

常见:

关系数据库。

例如:

MySQL:

employee表

id
name
salary

③ 查询效率高

例如:

查询工资:

SQL:

SELECT salary
FROM employee;

(3)结构化数据应用

教材列举:

  • 企业ERP;
  • 财务系统;
  • 医疗HIS数据库;
  • 教育一卡通;
  • 政府行政审批系统。

5.3 非结构化数据

(1)概念

非结构化数据:

没有固定数据模型的数据。

例如:

图片:

cat.jpg

视频:

movie.mp4

文本:

新闻.txt

教材指出:

非结构化数据没有预定义数据模型,不方便使用二维逻辑表表示。


(2)特点

① 格式多样

包括:

文本:

txt
doc
ppt

图像:

png
jpeg
gif

音频:

mp3
wav

视频:

mp4
avi

教材列出了文本、图像、音频、视频等常见形式。


② 难以直接分析

例如:

一张医学CT图片:

人可以理解:

“肺部异常”

但是计算机需要:

  • 图像矩阵;
  • 特征提取;
  • 深度学习模型。

(3)应用

主要应用:

图像识别

例如:

人脸识别。

医疗影像

例如:

CT辅助诊断。

文本分析

例如:

情感分析。

教材列举:

图片识别、人脸识别、医疗影像、文本分析等领域。


5.4 半结构化数据

(1)概念

半结构化数据:

介于结构化和非结构化之间。

具有:

部分结构。

但是:

结构不固定。

教材指出:

半结构化数据也称自描述结构,介于结构化和非结构化之间。


(2)典型格式

JSON

例如:

{
"name":"Tom",
"age":20,
"skill":[
"Python",
"Java"
]
}

XML

例如:

<student>

<name>Tom</name>

<age>20</age>

</student>

教材指出:

常见半结构化数据包括XML和JSON。


(3)优势

相比数据库:

扩展性强。

例如:

原:

{
"name":"Tom"
}

增加:

{
"name":"Tom",
"phone":"123456"
}

无需修改整体结构。


六、课堂案例分析

案例:

智慧校园数据

判断类型:

学生成绩数据库

答案:

结构化。

原因:

二维表。


学生照片

答案:

非结构化。

原因:

图片。


学生档案JSON

答案:

半结构化。

原因:

字段可变化。


七、实验1

数据类型识别与分类实验


1. 实验名称

现实数据类型分类实验


2. 实验目的

通过实际案例:

  1. 理解三类数据;
  2. 掌握数据分类方法;
  3. 建立数据处理思维。

3. 实验环境

无需代码。

工具:

Excel

文本编辑器


4. 实验内容

判断以下数据类型:

编号 数据 类型
1 学生成绩Excel表
2 医院CT图片
3 用户评论文本
4 商品JSON接口
5 企业MySQL数据库

5. 实验结果

编号 数据 类型
1 学生成绩Excel表 结构化
2 医院CT图片 非结构化
3 用户评论文本 非结构化
4 商品JSON接口 半结构化
5 企业MySQL数据库 结构化

6. 实验分析

通过实验可以发现:

数据类型不同:

决定:

  • 获取方式不同;
  • 存储方式不同;
  • 分析方法不同。

例如:

结构化数据:

重点:

查询统计。

非结构化:

重点:

特征提取。


八、课堂总结

本节学习:

数据三分类

结构化数据
       |
       |
半结构化数据
       |
       |
非结构化数据

核心思想:

数据获取和存储的第一步,是认识数据。


九、课后作业

理论题

  1. 什么是结构化数据?

  2. 为什么JSON属于半结构化数据?

  3. 图片为什么属于非结构化数据?


实践题

收集:

5种生活中的数据。

例如:

照片、Excel、聊天记录、网页数据。

完成:

数据名称 + 数据类型 + 推荐存储方式。


《Python数据预处理》

第二章 数据获取与存储

第2课时教学设计

主题:

常见数据文件格式与数据准备

Excel、CSV、JSON、XML文件认识与处理


一、课程基本信息

项目 内容
章节 第二章 数据获取与存储
课时 第2课时
主题 常见数据文件格式
教学方式 理论讲授+案例分析+代码实验
实验编号 实验2

二、本课教学目标

(一)知识目标

学生能够:

  1. 理解数据文件存储格式的意义;
  2. 掌握Excel、CSV、JSON、XML四种常见数据格式;
  3. 了解不同格式的数据结构特点;
  4. 理解不同格式在数据处理中的应用场景。

(二)能力目标

学生能够:

  1. 根据数据特点选择合适的数据格式;
  2. 使用Python读取常见数据文件;
  3. 使用Pandas完成简单数据导入;
  4. 使用JSON模块完成数据转换。

(三)素养目标

培养学生:

  • 数据规范意识;
  • 数据交换意识;
  • 数据工程实践能力。

三、教学重点与难点

(一)教学重点

重点1:CSV数据格式

原因:

CSV是数据分析中最常见的数据交换格式。

教材指出:

CSV文件是最常见的供机器读取的文件格式,以纯文本形式存储表格数据。


重点2:JSON数据格式

JSON目前广泛用于:

  • Web接口;
  • 数据传输;
  • 前后端交互。

教材指出:

JSON是数据存储和传输的重要格式,经常用于服务器向网页发送数据。


重点3:Python读取不同格式数据

数据预处理第一步:

不是分析数据,

而是:

获取数据。


(二)教学难点

难点1:

理解:

文件扩展名 ≠ 数据结构。

例如:

.csv

只是文件格式。

真正的数据结构:

取决于:

字段、分隔符、组织方式。


难点2:

理解JSON和Python对象转换。

例如:

Python:

dict

转换:

JSON字符串

再转换:

Python对象


四、教学导入(10分钟)

教师展示:

某企业员工数据:

方式1:

Excel:

姓名 年龄 工资
张三 25 8000

方式2:

CSV:

姓名,年龄,工资

张三,25,8000

方式3:

JSON:

{
"name":"张三",
"age":25,
"salary":8000
}

方式4:

XML:

<Employee>

<Name>张三</Name>

<Age>25</Age>

</Employee>

提问:

这些数据表达的是同一个信息,

为什么形式不同?

引出:

数据格式。


五、知识讲授

5.1 Excel文件

(1)概念

Excel是一种常见电子表格数据格式。

常见扩展名:

格式 说明
xls Excel 2003格式
xlsx Excel 2007以后格式
xlsm 带宏Excel格式
et WPS表格格式

教材列出了常见Excel格式及特点。


(2)Excel特点

优点:

① 可视化强

用户可以直接查看。

② 操作简单

适合:

人工录入。

③ 支持公式计算。


缺点:

① 数据规模有限

大量数据:

可能运行缓慢。


② 人工操作容易出错

例如:

输入:

年龄:

20

错误:

200


(3)应用场景

常见:

  • 企业报表;
  • 实验数据;
  • 调查问卷;
  • 财务统计。

5.2 CSV文件

(1)概念

CSV:

Comma-Separated Values

中文:

逗号分隔值。

特点:

纯文本保存表格数据。

教材指出:

CSV文件由多个记录组成,记录之间通过换行符分隔,每条记录具有相同字段序列。


示例

name,age,score

Tom,20,90

Jack,21,85

结构:

第一行:

字段名。

后续:

数据。


(2)CSV特点

优点

1. 文件小

没有复杂格式。

2. 通用性强

几乎所有数据软件支持。

3. 适合机器处理。


缺点

1. 不保存格式

例如:

字体、颜色。

2. 不支持复杂结构。


(3)Python读取CSV

方法1:

csv库

import csv


with open(
"student.csv",
"r"
) as f:

    reader=csv.reader(f)

    for row in reader:

        print(row)

方法2:

Pandas读取

import pandas as pd


df=pd.read_csv(
"student.csv"
)


print(df)

教材介绍Pandas可以通过read_csv()读取CSV,并自动转换为DataFrame对象。


5.3 JSON文件

(1)概念

JSON:

JavaScript Object Notation

是一种轻量级数据交换格式。


示例

{
"student":
{
"name":"Tom",
"age":20
}
}

(2)JSON结构

JSON主要由:

对象

对应Python:

dict

数组

对应Python:

list

教材指出:

JSON对象对应Python字典,JSON数组对应Python列表。


(3)JSON转换

Python → JSON

叫:

序列化。

函数:

json.dumps()

JSON → Python

叫:

反序列化。

函数:

json.loads()

教材列出了:

  • json.dumps
  • json.loads
  • json.dump
  • json.load

等常用函数。


5.4 XML文件

(1)概念

XML:

Extensible Markup Language

可扩展标记语言。


示例

<Student>

<Name>
Tom
</Name>

<Age>
20
</Age>

</Student>

(2)XML特点

优点:

1. 可读性强

人和机器都可以读取。

教材指出:

XML数据既便于机器读取,也便于人工读取。


2. 扩展性强

标签可以自定义。

例如:

<Height>
180
</Height>

六、四种数据格式比较

格式 结构 应用
Excel 二维表 人工管理数据
CSV 二维文本 数据交换
JSON 键值结构 网络接口
XML 标签结构 数据传输

七、实验2

常见文件格式读取实验


实验名称

Python读取Excel、CSV、JSON文件


1. 实验目的

掌握:

  1. CSV读取;
  2. JSON解析;
  3. Excel读取;
  4. 数据转换为DataFrame。

2. 实验环境

软件:

  • Python3
  • Jupyter Notebook

库:

pandas
json

3. 实验准备

创建:

student.csv

内容:

姓名,年龄,成绩

张三,20,90

李四,21,85

王五,19,95

创建:

student.json

内容:

[
{
"name":"张三",
"age":20,
"score":90
},

{
"name":"李四",
"age":21,
"score":85
}
]

4. 实验步骤

实验1:

读取CSV

代码:

import pandas as pd


df=pd.read_csv(
"student.csv"
)


print(df)

结果

输出:

姓名   年龄   成绩

张三   20    90

李四   21    85

王五   19    95

实验2:

读取JSON

代码:

import json


with open(
"student.json",
"r",
encoding="utf-8"
) as f:

    data=json.load(f)


print(data)

结果:

[
{'name':'张三',
'age':20,
'score':90}
]

实验3:

JSON转换DataFrame

代码:

df=pd.DataFrame(data)

print(df)

结果:

name age score
张三 20 90
李四 21 85

八、实验分析

通过实验可以发现:

不同格式的数据:

最终可以统一转换为:

DataFrame

方便后续:

  • 数据清洗;
  • 数据统计;
  • 数据分析。

数据处理流程:

CSV/JSON/Excel
       ↓
    Pandas
       ↓
 DataFrame
       ↓
 数据分析

九、课堂总结

本节核心:

数据格式决定数据处理方式

掌握:

  1. Excel

适合人工管理。

  1. CSV

适合机器交换。

  1. JSON

适合网络传输。

  1. XML

适合结构化描述。


十、课后作业

理论题

  1. CSV为什么适合机器读取?

  2. JSON为什么适合网络传输?

  3. Excel和CSV有什么区别?


实践题

完成:

  1. 创建一个学生信息CSV文件;
  2. 使用Pandas读取;
  3. 转换为JSON;
  4. 保存结果。

《Python数据预处理》

第二章 数据获取与存储

第3课时教学设计

主题:

网络爬虫获取数据

——从互联网中采集外部数据


一、课程基本信息

项目 内容
章节 第二章 数据获取与存储
课时 第3课时
主题 网络爬虫基础与数据获取流程
教学方式 理论讲授+案例分析+代码实验
实验编号 实验3

二、本课教学目标

(一)知识目标

学生能够:

  1. 理解网络爬虫的基本概念;
  2. 理解网络数据获取的基本流程;
  3. 掌握HTTP请求基本原理;
  4. 认识Python常用爬虫工具。

(二)能力目标

学生能够:

  1. 使用Python向网站发送请求;
  2. 获取网页HTML源码;
  3. 保存网络数据;
  4. 理解简单爬虫程序结构。

(三)素养目标

培养学生:

  • 合法获取数据意识;
  • 网络数据安全意识;
  • 数据采集工程思维。

三、本课教学内容分析

第二章前两课时介绍:

数据是什么;

数据有哪些格式。

但是:

数据从哪里来?

现实数据来源包括:

  • 企业内部数据库;
  • 文件数据;
  • 互联网公开数据。

教材指出:

数据可以分为内部数据和外部数据,随着互联网发展,网页成为大量信息载体,网络爬虫成为获取外部数据的重要方法。

因此:

本节进入:

网络数据采集。


四、教学重点与难点

(一)教学重点

重点1:网络爬虫概念

理解:

爬虫不是“自动浏览网页”,而是一套:

请求

解析

保存

的数据采集流程。

教材定义:

网络爬虫(Web Spider)又称网络蜘蛛或网络机器人,是从网站获取数据信息的过程,可以将网页中的半结构化、非结构化数据抽取出来并保存。


重点2:爬虫工作流程

三个核心步骤:

请求数据
    ↓
解析数据
    ↓
保存数据

教材指出:

网络爬虫基本执行流程可以总结为:

请求数据、解析数据、保存数据三个过程。


重点3:Python请求工具

主要介绍:

  • urllib
  • requests
  • BeautifulSoup

(二)教学难点

难点1:

理解网页不是数据表。

学生习惯:

Excel:

|姓名|年龄|

但是网页:

<div>
<h1>新闻标题</h1>
</div>

需要:

解析。


难点2:

理解爬虫不是无限制抓取。

需要遵守:

  • 网站规则;
  • robots协议;
  • 法律法规。

教材强调:

爬虫是一把双刃剑,应遵守robots协议,不应非法获取个人信息或攻击网站。


五、教学导入(10分钟)

案例:

某公司想分析:

全国房价变化趋势。

数据来源:

方法1:

人工收集。

问题:

  • 慢;
  • 成本高;
  • 数据更新困难。

方法2:

互联网公开数据。

例如:

房产网站:

城市
面积
价格
时间

自动采集。

引出:

网络爬虫。


六、知识讲授

6.1 什么是网络爬虫

(1)概念

网络爬虫:

英文:

Web Spider

也称:

  • 网络蜘蛛;
  • 网络机器人。

作用:

自动访问网页;

提取需要的数据。


(2)爬虫应用

搜索引擎

例如:

百度、Google。

搜索引擎实际上大量使用爬虫程序。

教材指出:

百度、搜狗、360、Google等搜索服务都拥有自己的爬虫程序。


数据分析

例如:

采集:

  • 新闻;
  • 商品价格;
  • 用户评价。

企业应用

例如:

市场监测:

竞争产品价格变化。


6.2 网络爬虫工作流程

完整流程:

目标网站

↓

发送请求

↓

获取网页数据

↓

解析网页

↓

提取目标信息

↓

保存数据


第一步:

请求数据

什么是请求?

客户端:

向服务器发送:

“我要这个网页”。

服务器:

返回:

网页内容。


请求内容包括:

  • HTML;
  • JSON;
  • 图片;
  • 视频;
  • 音频。

教材指出:

请求的数据除了HTML,还包括JSON、字符串、图片、视频、音频等。


第二步:

解析数据

服务器返回:

大量网页代码。

例如:

<html>

<h1>
Python教程
</h1>

</html>

需要提取:

标题:

Python教程。


常用解析工具:

  • BeautifulSoup;
  • lxml。

第三步:

保存数据

保存格式:

  • CSV;
  • JSON;
  • 数据库。

教材指出:

提取后的数据可以保存为CSV、JSON、pickle等格式,也可以存储到MySQL、MongoDB等数据库。


6.3 URL结构认识

网络请求需要地址:

URL。

例如:

https://www.example.com/news?id=10

URL组成:

  1. 协议;
  2. 域名;
  3. 端口;
  4. 路径;
  5. 查询参数。

教材介绍URL基本组成包括协议、域名、端口号、路径和查询字符串。


示例分析

URL:

http://www.test.com/article?id=100

拆分:

部分 含义
http 协议
www.test.com 域名
article 路径
id=100 参数

6.4 静态网页与动态网页

(1)静态网页

特点:

网页内容固定。

例如:

.html

可以直接获取。


(2)动态网页

特点:

网页内容通过程序生成。

例如:

  • AJAX;
  • JSP;
  • ASP。

教材指出:

动态网页可以通过技术实现页面局部更新,不需要重新加载整个页面。


七、Python网络请求工具

7.1 urllib库

特点

Python标准库。

无需额外安装。

作用:

获取网页HTML。

教材指出:

urllib属于Python标准库,是Python爬虫常用模块。


主要模块:

模块 作用
urllib.request 打开读取URL
urllib.error 处理异常
urllib.parse 解析URL
robotparser 解析robots协议

7.2 requests库

requests:

用于HTTP请求。

示例:

import requests


response=requests.get(
"https://www.baidu.com"
)


print(response.text)

返回:

网页HTML源码。

教材指出:

requests主要用于发送HTTP请求,并且比urllib更加简洁。


八、实验3

使用Python获取网页数据实验


实验名称

Requests网页数据获取


1. 实验目的

掌握:

  1. HTTP请求方法;
  2. requests库使用;
  3. 获取网页源码;
  4. 保存网页数据。

2. 实验环境

软件:

  • Python3
  • Jupyter Notebook

安装:

pip install requests

3. 实验原理

流程:

Python程序

↓

requests.get()

↓

服务器

↓

返回HTML

↓

Python读取

4. 实验步骤

步骤1:

导入requests

import requests

步骤2:

发送请求

url="https://www.baidu.com"


response=requests.get(url)


print(response.status_code)

步骤3:

查看网页内容

print(response.text[:500])

五、实验结果

运行结果:

状态码:

200

说明:

请求成功。

网页返回:

<html>

<head>

<title>百度一下</title>

</head>

</html>

六、保存网页数据

代码:

with open(
"baidu.html",
"w",
encoding="utf-8"
) as f:

    f.write(response.text)

实验结果

当前目录生成:

baidu.html

打开:

浏览器显示网页源码。


九、实验分析

通过实验:

学生理解:

网络数据获取过程

不是直接读取数据,

而是:

  1. 发送请求;
  2. 获取响应;
  3. 解析内容;
  4. 保存数据。

十、课堂讨论

问题1

为什么爬虫不能无限制访问网站?

答案:

因为可能:

  • 消耗服务器资源;
  • 侵犯隐私;
  • 违反网站规则。

问题2

爬虫获取的数据属于什么类型?

答案:

通常:

半结构化数据。

例如:

HTML。


十一、课堂总结

本节学习:

网络爬虫流程

请求数据

↓

解析数据

↓

保存数据

核心工具:

工具 作用
urllib 基础请求
requests HTTP请求
BeautifulSoup 网页解析

十二、课后作业

理论题

  1. 什么是网络爬虫?

  2. 爬虫有哪些基本步骤?

  3. 为什么爬虫需要遵守robots协议?


实践题

完成:

使用requests获取一个公开网页:

要求:

  1. 输出网页状态码;
  2. 保存HTML文件;
  3. 截取前100行源码。

《Python数据预处理》

第二章 数据获取与存储

第4课时教学设计

主题:

HTML网页解析与Beautiful Soup数据提取

——从网页源码中提取有效信息


一、课程基本信息

项目 内容
章节 第二章 数据获取与存储
课时 第4课时
主题 网页解析与数据提取
教学方式 理论讲授+案例分析+代码实验
实验编号 实验4

二、本课教学目标

(一)知识目标

学生能够:

  1. 理解HTML网页结构;
  2. 理解网页数据提取的基本思想;
  3. 掌握Beautiful Soup解析网页的方法;
  4. 掌握find()和find_all()基本用法。

(二)能力目标

学生能够:

  1. 从网页源码中定位目标信息;
  2. 使用Beautiful Soup解析HTML;
  3. 提取网页中的文本、图片、链接等内容;
  4. 完成简单网页数据采集任务。

(三)素养目标

培养学生:

  • 网络数据分析能力;
  • 信息筛选能力;
  • 合法采集网络数据意识。

三、本课内容分析

上一课学习:

requests获取网页。

但是:

requests得到的是:

原始网页源码。

例如:

<html>

<body>

<h1>
Python教程
</h1>

<img src="logo.png">

</body>

</html>

如果直接处理:

需要人工寻找:

  • 标签;
  • 属性;
  • 内容。

因此需要:

HTML解析工具。


教材在网络爬虫部分介绍:

网页数据获取后,需要对HTML/XML文档进行解析,并提取需要的数据。Beautiful Soup可以快速从HTML或XML文档中提取指定数据。


四、教学重点与难点

(一)教学重点

重点1:HTML网页结构

理解网页由:

  • HTML
  • CSS
  • JavaScript

组成。

教材指出:

网页一般由HTML、CSS和JavaScript三部分组成,分别负责网页内容、布局和行为。


重点2:Beautiful Soup解析

掌握:

find()

find_all()

方法。

教材指出:

find_all()和find()是解析HTML文档常用方法,可以按照条件查找需要内容。


重点3:图片资源提取

理解:

网页图片不是直接存在HTML中,而是通过:

<img src="">

引用。


(二)教学难点

难点1:

理解HTML不是数据表。

例如:

学生成绩:

姓名 成绩
张三 90

网页:

<div>

<span>
张三
</span>

<span>
90
</span>

</div>

需要解析标签。


难点2:

理解网页结构变化。

例如:

今天:

<img class="logo">

明天:

<img class="new-logo">

爬虫可能失效。

因此:

实际爬虫需要维护。


五、教学导入(10分钟)

教师展示百度首页源码:

<img src="xxx.png">

提问:

浏览器显示:

一张图片。

但是Python看到:

只是:

一段文字。

为什么?

学生思考。

教师总结:

网页本质:

HTML代码。

浏览器:

负责解释代码。

爬虫:

需要解析代码。


六、知识讲授

6.1 HTML基础

(1)HTML作用

HTML:

HyperText Markup Language

中文:

超文本标记语言。

作用:

描述网页结构。


例如:

标题:

<h1>
数据分析
</h1>

图片:

<img src="a.jpg">

链接:

<a href="www.baidu.com">
百度
</a>

(2)HTML标签结构

基本形式:

<tag>

内容

</tag>

例如:

<p>
Hello Python
</p>

其中:

标签:

<p>

文本:

Hello Python

6.2 网页解析思想

网页:

HTML源码

解析标签

提取数据

例如:

目标:

网页标题。

源码:

<title>
Python教程
</title>

提取:

Python教程。


6.3 Beautiful Soup介绍

(1)概念

Beautiful Soup:

简称:

BS4。

作用:

从HTML/XML中提取数据。

教材指出:

Beautiful Soup是Python第三方库,可以从HTML或XML文档快速提取指定数据。


(2)安装

命令:

pip install bs4

同时:

需要解析器:

pip install lxml

教材指出:

BS4解析页面需要依赖文档解析器,因此需要安装lxml。


6.4 Beautiful Soup基本使用

第一步:

导入库

from bs4 import BeautifulSoup

第二步:

创建解析对象

soup=BeautifulSoup(
html,
"html.parser"
)

6.5 find()方法

作用:

寻找第一个满足条件的标签。

例如:

HTML:

<h1>
Python
</h1>

代码:

soup.find("h1")

结果:

<h1>
Python
</h1>

6.6 find_all()方法

作用:

寻找全部符合条件标签。

例如:

HTML:

<img>

<img>

<img>

代码:

soup.find_all("img")

返回:

图片列表。


七、网页图片获取原理

网页:

<img src="logo.png">

其中:

img:

图片标签

src:

图片地址

爬虫步骤:

获取网页

↓

寻找img标签

↓

读取src地址

↓

下载图片

八、百度Logo爬取案例讲解

教材案例:

爬取百度首页Logo,并保存为:

logo.png。

程序流程:

  1. 获取百度网页;
  2. 使用BeautifulSoup解析;
  3. 找到img标签;
  4. 获取logo地址;
  5. 下载图片。

教材给出了完整程序,包括:

urllib获取网页;

BeautifulSoup解析HTML;

urlretrieve下载图片。


九、实验4

使用Beautiful Soup爬取网页图片实验


实验名称

百度Logo图片爬取


1. 实验目的

掌握:

  1. requests网页请求;
  2. BeautifulSoup解析;
  3. HTML标签查找;
  4. 图片下载保存。

2. 实验环境

Python3

安装:

pip install requests

pip install bs4

pip install lxml

3. 实验原理

流程:

百度网页

↓

requests获取HTML

↓

BeautifulSoup解析

↓

查找img标签

↓

获得图片URL

↓

保存图片

4. 实验代码

import requests

from bs4 import BeautifulSoup

from urllib.request import urlretrieve



url="https://www.baidu.com"



html=requests.get(url).text



soup=BeautifulSoup(
html,
"html.parser"
)



imgs=soup.find_all("img")


print(imgs)

5. 获取图片地址

代码:

for img in imgs:

    if img.get("src"):

        print(img["src"])

6. 下载图片

img_url="图片地址"


urlretrieve(
img_url,
"logo.png"
)

十、实验结果

运行后:

控制台输出:

图片地址:

http://www.baidu.com/img/xxx.png

项目目录生成:

logo.png

打开:

可以看到百度Logo图片。


十一、实验分析

实验完成了完整爬虫流程:

数据请求

requests

数据解析

BeautifulSoup

数据保存

图片文件

说明:

网页中的非结构化数据可以通过解析转换为可利用数据。


十二、课堂案例扩展

案例:

爬取新闻标题。

网页:

<h2>
人工智能发展趋势
</h2>

代码:

title=soup.find("h2")

print(title.text)

结果:

人工智能发展趋势

十三、课堂讨论

问题1:

为什么requests不能直接得到结构化数据?

答案:

因为网页返回的是HTML源码,需要解析。


问题2:

BeautifulSoup作用是什么?

答案:

解析HTML/XML,提取目标信息。


问题3:

为什么不能随意爬取网站?

答案:

可能:

  • 违反网站规则;
  • 造成服务器压力;
  • 涉及隐私安全。

十四、课堂总结

本节核心:

网页爬虫完整流程

requests

↓

HTML源码

↓

BeautifulSoup

↓

目标数据

↓

保存

掌握工具:

工具 作用
requests 网页请求
BeautifulSoup HTML解析
lxml 解析器
urlretrieve 文件下载

十五、课后作业

理论题

  1. HTML、CSS、JavaScript分别有什么作用?

  2. BeautifulSoup主要解决什么问题?

  3. find()和find_all()有什么区别?


实践题

选择一个公开网页:

完成:

  1. 获取HTML源码;
  2. 提取网页标题;
  3. 提取3个链接;
  4. 保存结果到CSV文件。

《Python数据预处理》

第二章 数据获取与存储

第5课时教学设计

主题:

数据读写基础

——利用Python读取、写入和管理数据文件


一、课程基本信息

项目 内容
章节 第二章 数据获取与存储
课时 第5课时
主题 数据文件读写
教学方式 理论讲授+案例分析+代码实验
实验编号 实验5

二、本课教学目标

(一)知识目标

学生能够:

  1. 理解数据读取与写入的基本概念;
  2. 掌握Python文件操作方法;
  3. 掌握CSV文件读取与保存方法;
  4. 了解Pandas数据输入输出(I/O)工具。

(二)能力目标

学生能够:

  1. 使用Python打开本地文件;
  2. 使用read/write完成文件操作;
  3. 使用Pandas读取CSV数据;
  4. 将处理后的数据保存为新的文件。

(三)素养目标

培养学生:

  • 数据文件管理意识;
  • 数据保存规范意识;
  • 数据分析工程流程意识。

三、本课内容分析

上一部分学习:

如何从网络获取数据。

但是获取的数据需要进一步:

  • 保存;
  • 读取;
  • 转换;
  • 分析。

数据处理流程:

数据来源

↓

文件/数据库

↓

读取数据

↓

数据处理

↓

保存结果

教材指出:

数据从被使用到保存的过程称为数据读取和写入过程,读取数据可以分为读取本地文件和读取网络数据两类。


四、教学重点与难点

(一)教学重点

重点1:Python文件操作

掌握:

open()

函数。


重点2:CSV数据读写

CSV是数据处理中最常见的数据格式。

掌握:

读取:

pd.read_csv()

写入:

df.to_csv()

重点3:Pandas I/O工具

Pandas提供大量数据读取和写入接口。

教材列举:

读取 写入
read_csv to_csv
read_excel to_excel
read_json to_json
read_sql to_sql

(二)教学难点

难点1:

理解文件路径。

例如:

Windows路径:

C:\Users\Admin\data.csv

Python中:

需要注意:

反斜杠。


难点2:

理解文件打开模式。

例如:

模式 作用
r 读取
w 写入
a 追加
rw 读写

教材介绍了open函数模式,包括r、w、rw和a。


五、教学导入(10分钟)

教师提出问题:

上一节爬取百度Logo:

图片保存在哪里?

如果爬取:

10000条新闻:

怎么办?

答案:

必须:

自动保存。

引出:

数据读写。


六、知识讲授

6.1 数据读取与写入概念

(1)数据读取

读取:

将外部数据加载到程序中。

例如:

CSV文件:

Python对象。


(2)数据写入

写入:

将程序中的数据保存到文件。

例如:

DataFrame:

CSV文件。


6.2 Python文件操作

(1)open函数

基本格式:

open(
文件路径,
打开模式,
encoding
)

例如:

f=open(
"student.txt",
"r",
encoding="utf-8"
)

(2)读取文件

read()

一次读取全部内容。

示例:

content=f.read()

print(content)

readline()

读取一行。

示例:

line=f.readline()

print(line)

readlines()

读取所有行。

返回:

列表。


教材指出:

readline()用于逐行读取,readlines()用于一次性读取所有数据,并将每行存储为字符串列表。


(3)关闭文件

方式1:

f.close()

方式2:

推荐:

with open():

    内容

优点:

自动关闭。

教材案例使用with open方式读取CSV文件。


6.3 文件写入

write()

写入字符串。

例如:

with open(
"test.txt",
"w"
) as f:

    f.write(
    "Hello Python"
    )

结果:

生成:

test.txt

内容:

Hello Python

6.4 CSV文件读取

CSV结构:

姓名,年龄,成绩

张三,20,90

李四,21,85

方法1:

csv模块

import csv


with open(
"student.csv",
"r",
encoding="utf-8"
) as f:


    reader=csv.reader(f)


    for row in reader:

        print(row)

输出:

['姓名','年龄','成绩']

['张三','20','90']

方法2:

Pandas读取

import pandas as pd


df=pd.read_csv(
"student.csv"
)


print(df)

结果:

姓名 年龄 成绩
张三 20 90
李四 21 85

教材给出了Pandas读取CSV文件的方法:

df = pd.read_csv(filepath)

并将CSV自动转换为DataFrame对象。


6.5 CSV文件写入

DataFrame保存CSV

代码:

df.to_csv(
"new_student.csv"
)

结果:

生成:

new_student.csv

教材指出:

Pandas提供to_csv()函数,可以将DataFrame转换为CSV数据。


七、Pandas数据输入输出体系

Pandas常用:

读取

CSV

read_csv()

Excel

read_excel()

JSON

read_json()

数据库

read_sql()

写入

对应:

to_csv()

to_excel()

to_json()

to_sql()

八、实验5

Pandas文件读写实验


实验名称

学生数据文件读取与保存


1. 实验目的

掌握:

  1. CSV文件创建;
  2. Pandas读取数据;
  3. DataFrame处理;
  4. 数据保存。

2. 实验环境

软件:

  • Python3
  • Jupyter Notebook

库:

pandas

3. 实验准备

创建:

student.csv

内容:

姓名,数学,英语

张三,90,85

李四,80,90

王五,95,88

4. 实验步骤

步骤1:

导入Pandas

import pandas as pd

步骤2:

读取CSV

df=pd.read_csv(
"student.csv"
)


print(df)

结果:

姓名 数学 英语
张三 90 85
李四 80 90
王五 95 88

步骤3:

查看数据

查看前几行

df.head()

查看信息

df.info()

统计

df.describe()

步骤4:

计算平均成绩

df["数学"].mean()

结果:

88.33

步骤5:

保存数据

df.to_csv(
"result.csv",
index=False
)

九、实验结果

运行完成后:

生成:

result.csv

内容:

姓名 数学 英语
张三 90 85
李四 80 90
王五 95 88

十、实验分析

通过实验完成:

数据读取

CSV

DataFrame

数据处理

统计分析

数据保存

DataFrame

CSV

形成完整数据处理闭环。


十一、课堂案例拓展

案例:

企业销售数据分析

原始:

sales.csv

包含:

日期 商品 销售额
1月1日 手机 5000

读取:

pd.read_csv()

分析:

销售总额。

保存:

to_csv()

形成:

销售报告。


十二、课堂讨论

问题1:

为什么推荐使用with open?

答案:

自动关闭文件,避免资源占用。


问题2:

为什么CSV比Excel更适合机器处理?

答案:

CSV结构简单,文本格式,容易解析。


问题3:

Pandas读取CSV后为什么转换为DataFrame?

答案:

方便后续:

  • 清洗;
  • 筛选;
  • 统计。

十三、课堂总结

本节重点:

数据读写流程

文件

↓

读取

↓

DataFrame

↓

处理

↓

保存

掌握:

工具 作用
open 基础文件操作
csv CSV处理
Pandas 数据分析读写

十四、课后作业

理论题

  1. open函数有哪些常用模式?

  2. read_csv和read_excel有什么区别?

  3. 为什么数据分析中经常使用DataFrame?


实践题

完成:

创建一个学生成绩CSV文件:

要求:

  1. Python读取;
  2. 计算平均成绩;
  3. 添加排名字段;
  4. 保存新CSV。

《Python数据预处理》

第二章 数据获取与存储

第6课时教学设计

主题:

JSON与XML数据读写

——实现半结构化数据的解析与交换


一、课程基本信息

项目 内容
章节 第二章 数据获取与存储
课时 第6课时
主题 JSON/XML数据读写
教学方式 理论讲授+案例分析+代码实验
实验编号 实验6

二、本课教学目标

(一)知识目标

学生能够:

  1. 理解半结构化数据存储特点;
  2. 掌握JSON数据结构;
  3. 掌握JSON文件读写方法;
  4. 理解XML文件结构;
  5. 掌握XML基本解析方法。

(二)能力目标

学生能够:

  1. 使用Python处理JSON数据;
  2. 完成Python对象与JSON数据转换;
  3. 使用XML解析工具读取节点信息;
  4. 根据数据特点选择合适的数据交换格式。

(三)素养目标

培养学生:

  • 数据交换意识;
  • 接口数据处理能力;
  • 多源异构数据处理能力。

三、本课内容分析

前面学习:

  • CSV;
  • Excel;

这些数据主要用于:

二维表数据。

但是现实应用中:

大量数据来自:

  • 网站接口;
  • 网络服务;
  • 软件系统。

例如:

天气接口返回:

{
"city":"Beijing",
"temperature":25
}

这种数据:

不是传统二维表,

而是:

半结构化数据。

教材指出:

半结构化数据介于结构化数据和非结构化数据之间,具有一定结构但结构不固定,常见形式包括XML和JSON。


四、教学重点与难点

(一)教学重点

重点1:JSON数据结构

掌握:

  • 对象;
  • 数组;
  • 键值对。

重点2:JSON与Python转换

掌握:

Python对象:

JSON

以及:

JSON:

Python对象


重点3:XML节点解析

掌握:

  • 标签;
  • 属性;
  • 节点。

(二)教学难点

难点1:

JSON和Python字典关系。

学生容易认为:

JSON就是Python字典。

实际上:

两者类似,但格式不同。

例如:

Python:

student={
"name":"Tom"
}

JSON:

{
"name":"Tom"
}

难点2:

理解XML树结构。

例如:

<Student>

<Name>
Tom
</Name>

<Age>
20
</Age>

</Student>

结构:

Student
 |
 ├──Name
 |
 └──Age

五、教学导入(10分钟)

教师展示:

某天气APP获取数据:

返回内容:

{
"city":"Shanghai",
"weather":"sunny",
"temperature":30
}

问题:

为什么天气软件不用Excel返回数据?

原因:

因为:

网络传输需要:

  • 结构清晰;
  • 易解析;
  • 易扩展。

引出:

JSON/XML。


六、知识讲授

6.1 JSON数据格式

(1)JSON概念

JSON:

JavaScript Object Notation

是一种轻量级数据交换格式。

主要特点:

  • 易阅读;
  • 易解析;
  • 易传输。

教材指出:

JSON是一种轻量级数据交换格式,常用于服务器向网页发送数据。


(2)JSON基本结构

JSON主要包括:

① 对象

形式:

{
"key":"value"
}

对应Python:

dict

例如:

{
"name":"张三",
"age":20
}

Python:

{
"name":"张三",
"age":20
}

② 数组

形式:

[
数据1,
数据2
]

对应Python:

list

例如:

[
"Python",
"Java",
"C++"
]

教材指出:

JSON对象对应Python字典,JSON数组对应Python列表。


6.2 JSON与Python转换

Python提供:

json模块。

导入:

import json

(1)序列化

Python对象

转换为:

JSON字符串。

方法:

json.dumps()

示例:

import json


student={
"name":"Tom",
"age":20
}


json_data=json.dumps(student)


print(json_data)

结果:

{
"name":"Tom",
"age":20
}

(2)反序列化

JSON字符串

转换:

Python对象。

方法:

json.loads()

示例:

data='{"name":"Tom"}'


student=json.loads(data)


print(student)

结果:

{
'name':'Tom'
}

6.3 JSON文件读写

写JSON文件

方法:

json.dump()

示例:

import json


student={
"name":"张三",
"score":90
}


with open(
"student.json",
"w",
encoding="utf-8"
) as f:

    json.dump(
    student,
    f,
    ensure_ascii=False
    )

生成:

student.json

内容:

{
"name":"张三",
"score":90
}

读取JSON文件

方法:

json.load()

示例:

with open(
"student.json",
"r",
encoding="utf-8"
) as f:

    data=json.load(f)


print(data)

6.4 XML数据格式

(1)XML概念

XML:

Extensible Markup Language

中文:

可扩展标记语言。

特点:

通过标签描述数据。

教材指出:

XML允许用户自定义标签,同时数据既便于机器读取,也便于人工阅读。


(2)XML结构

示例:

<Student>

<Name>
张三
</Name>

<Age>
20
</Age>

<Score>
90
</Score>

</Student>

结构:

Student

├──Name

├──Age

└──Score

(3)XML组成

标签

例如:

<Name>

元素

例如:

<Name>
Tom
</Name>

属性

例如:

<Student id="001">

6.5 Python解析XML

Python常用:

ElementTree

导入:

import xml.etree.ElementTree as ET

读取:

tree=ET.parse(
"student.xml"
)


root=tree.getroot()

遍历节点:

for child in root:

    print(child.tag)

    print(child.text)

七、JSON与XML比较

特点 JSON XML
结构 键值 标签
可读性 较高 较高
数据量 较小 较大
解析难度 简单 较复杂
应用 接口传输 配置文件

八、实验6

JSON与XML数据处理实验


实验名称

半结构化数据读取与解析


1. 实验目的

掌握:

  1. JSON文件创建;
  2. JSON读取;
  3. Python对象转换;
  4. XML节点解析。

2. 实验环境

软件:

  • Python3
  • Jupyter Notebook

使用模块:

json

xml.etree.ElementTree

3. 实验一:JSON文件读写

创建数据

student={

"name":"张三",

"age":20,

"score":90

}

写入JSON

import json


with open(
"student.json",
"w",
encoding="utf-8"
) as f:

    json.dump(
    student,
    f,
    ensure_ascii=False
    )

结果:

生成:

student.json


读取JSON

with open(
"student.json",
"r",
encoding="utf-8"
) as f:

    data=json.load(f)


print(data)

输出:

{
'name':'张三',
'age':20,
'score':90
}

4. 实验二:XML解析

创建:

student.xml

内容:

<Student>

<Name>
张三
</Name>

<Age>
20
</Age>

<Score>
90
</Score>

</Student>

读取:

import xml.etree.ElementTree as ET


tree=ET.parse(
"student.xml"
)


root=tree.getroot()


for item in root:

    print(
    item.tag,
    item.text
    )

实验结果

输出:

Name 张三

Age 20

Score 90

九、实验分析

实验完成:

JSON流程

Python对象

JSON文件

Python对象


XML流程

XML文件

节点解析

目标数据


说明:

半结构化数据虽然不是二维表,

但是可以通过程序转换为可分析数据。


十、课堂案例拓展

案例:

天气数据接口

返回:

{
"city":"Beijing",
"temperature":25,
"humidity":60
}

处理:

temperature=data["temperature"]

得到:

温度:

25℃


十一、课堂讨论

问题1:

为什么网络接口喜欢使用JSON?

答案:

  • 结构简单;
  • 数据量小;
  • 易解析。

问题2:

JSON和CSV哪个更适合复杂数据?

答案:

JSON。

因为支持:

嵌套结构。

例如:

{
"user":{
"name":"Tom",
"address":{
"city":"Beijing"
}
}
}

十二、课堂总结

本节核心:

半结构化数据处理流程

JSON/XML

↓

Python解析

↓

结构化对象

↓

数据分析

掌握:

工具 作用
json.dumps 对象转JSON
json.loads JSON转对象
json.dump 写文件
json.load 读文件
ElementTree XML解析

十三、课后作业

理论题

  1. JSON为什么适合网络传输?

  2. JSON对象和Python字典有什么关系?

  3. XML数据有什么特点?


实践题

完成:

创建一个学生信息JSON文件:

包含:

  • 姓名
  • 年龄
  • 成绩
  • 兴趣列表

要求:

  1. Python读取;
  2. 修改成绩;
  3. 保存新JSON。

《Python数据预处理》

第二章 数据获取与存储

第7课时教学设计

主题:

数据库存储数据

——利用数据库实现结构化数据管理


一、课程基本信息

项目 内容
章节 第二章 数据获取与存储
课时 第7课时
主题 数据库存储数据
教学方式 理论讲授+案例分析+代码实验
实验编号 实验7

二、本课教学目标

(一)知识目标

学生能够:

  1. 理解数据库在数据存储中的作用;
  2. 了解关系型数据库基本概念;
  3. 理解数据表、字段、记录之间的关系;
  4. 掌握Python连接数据库的方法;
  5. 了解SQL基本操作。

(二)能力目标

学生能够:

  1. 创建简单数据库;
  2. 建立数据表;
  3. 使用Python连接数据库;
  4. 完成数据插入、查询、修改和删除;
  5. 将Python数据分析流程与数据库结合。

(三)素养目标

培养学生:

  • 数据管理意识;
  • 大规模数据存储意识;
  • 数据库工程应用能力。

三、本课内容分析

前面学习:

文件存储方式

例如:

CSV:

student.csv

JSON:

student.json

这些方式适合:

小规模数据。

但是:

如果数据规模达到:

百万级;

千万级;

文件方式存在:

  • 查询慢;
  • 管理困难;
  • 并发能力不足。

因此需要:

数据库。

教材指出:

数据库能够有效组织、存储和管理数据,是数据存储的重要方式。


四、教学重点与难点

(一)教学重点

重点1:数据库基本结构

理解:

数据库:

数据表

字段

记录

例如:

数据库:

student_db

数据表:

student

字段:

id name score
1 张三 90

重点2:SQL基本操作

包括:

增加:

INSERT

查询:

SELECT

修改:

UPDATE

删除:

DELETE


重点3:Python连接数据库

理解:

Python不是数据库本身。

Python:

负责操作。

数据库:

负责保存。


(二)教学难点

难点1:

理解数据库和文件区别。

比较:

项目 文件 数据库
规模
查询
管理 简单 专业
并发

难点2:

理解SQL和Python关系。

例如:

Python:

cursor.execute()

执行:

SQL:

SELECT * FROM student;

五、教学导入(10分钟)

教师提出问题:

学校有:

10万学生信息。

保存方式1:

Excel:

student.xlsx

查询:

某学院所有学生。

需要:

打开文件;

逐行搜索。

问题:

效率如何?


保存方式2:

数据库:

student数据库

student表

执行:

SELECT *
FROM student
WHERE major='计算机';

立即得到结果。

引出:

数据库存储。


六、知识讲授

6.1 数据库概念

(1)数据库定义

数据库:

Database

简称:

DB。

是一种:

按照一定结构组织的数据集合。

主要功能:

  • 存储数据;
  • 管理数据;
  • 查询数据。

(2)数据库组成

数据库系统通常包括:

数据库

存储数据。

例如:

学生数据库。


数据表

组织数据。

例如:

student表。


字段

描述数据属性。

例如:

姓名、年龄。


记录

一条完整数据。

例如:

张三,20岁。


6.2 为什么使用数据库

1. 提高数据管理能力

例如:

企业:

用户信息:

1000万人。

数据库:

统一管理。


2. 快速查询

例如:

查询:

年龄大于30岁的用户。

数据库:

快速完成。


3. 支持多用户访问

例如:

银行系统:

多个工作人员同时查询。


6.3 关系型数据库

(1)概念

关系型数据库:

Relational Database

通过二维表存储数据。

例如:

MySQL:

student表

学号 姓名 成绩
001 张三 90
002 李四 85

常见关系型数据库

数据库 应用
MySQL Web应用
Oracle 大型企业
SQL Server 微软生态
SQLite 轻量应用

6.4 MySQL数据库介绍

MySQL:

开源关系数据库。

特点:

  • 免费;
  • 性能较好;
  • 应用广泛。

常见应用:

  • 网站后台;
  • 企业系统;
  • 数据分析平台。

6.5 SQL语言基础

SQL:

Structured Query Language

用于:

操作数据库。


(1)创建表

示例:

CREATE TABLE student
(
id INT,
name VARCHAR(20),
score INT
);

创建:

student表。


(2)插入数据

INSERT INTO student
VALUES
(
1,
'张三',
90
);

(3)查询数据

SELECT *
FROM student;

结果:

id name score
1 张三 90

(4)修改数据

UPDATE student

SET score=95

WHERE id=1;

(5)删除数据

DELETE FROM student

WHERE id=1;

6.6 Python连接数据库

Python连接数据库流程:

Python程序

↓

数据库驱动

↓

MySQL数据库

↓

SQL执行

↓

返回结果

常用库:

pymysql

安装:

pip install pymysql

七、Python操作MySQL

7.1 创建连接

代码:

import pymysql


conn=pymysql.connect(

host="localhost",

user="root",

password="123456",

database="student"

)

7.2 创建游标

cursor=conn.cursor()

游标:

用于执行SQL。


7.3 执行SQL

例如查询:

sql="SELECT * FROM student"


cursor.execute(sql)

7.4 获取结果

result=cursor.fetchall()


print(result)

八、实验7

Python连接数据库实验


实验名称

Python操作MySQL数据库


1. 实验目的

掌握:

  1. 数据库连接;
  2. SQL执行;
  3. 数据查询;
  4. Python读取数据库结果。

2. 实验环境

软件:

  • Python3
  • MySQL
  • Jupyter Notebook

Python库:

pymysql

3. 实验准备

创建数据库:

CREATE DATABASE school;

创建数据表:

USE school;


CREATE TABLE student
(

id INT,

name VARCHAR(20),

score INT

);

插入数据:

INSERT INTO student

VALUES

(1,'张三',90),

(2,'李四',85),

(3,'王五',95);

4. 实验步骤

步骤1:

安装pymysql

pip install pymysql

步骤2:

连接数据库

import pymysql


conn=pymysql.connect(

host="localhost",

user="root",

password="123456",

database="school"

)


print("连接成功")

实验结果

输出:

连接成功

步骤3:

查询数据

代码:

cursor=conn.cursor()


cursor.execute(
"SELECT * FROM student"
)


result=cursor.fetchall()


print(result)

输出结果

(
(1,'张三',90),

(2,'李四',85),

(3,'王五',95)
)

步骤4:

转换为DataFrame

import pandas as pd


df=pd.DataFrame(

result,

columns=[
"id",
"name",
"score"
]

)


print(df)

结果:

id name score
1 张三 90
2 李四 85
3 王五 95

九、实验分析

通过实验完成:

数据库:

Python连接

SQL查询

DataFrame

数据分析

形成:

数据库+Python数据分析流程。


十、课堂案例拓展

案例:

电商用户分析。

数据库:

user表

字段:

字段
用户ID
年龄
消费金额

Python:

读取:

pd.read_sql()

分析:

用户消费规律。


十一、课堂讨论

问题1:

为什么大型数据不推荐使用Excel保存?

答案:

因为:

  • 查询效率低;
  • 数据管理能力弱。

问题2:

数据库和CSV有什么区别?

答案:

CSV:

文件。

数据库:

管理系统。


问题3:

Python为什么需要数据库驱动?

答案:

Python需要通过驱动与数据库通信。


十二、课堂总结

本节核心:

数据库存储流程

数据库

↓

数据表

↓

SQL

↓

Python

↓

数据分析

掌握:

技术 作用
MySQL 数据存储
SQL 数据库操作
PyMySQL Python连接数据库
Pandas 数据分析

十三、课后作业

理论题

  1. 数据库相比文件存储有什么优势?

  2. SQL有哪些基本操作?

  3. Python如何连接数据库?


实践题

完成:

建立学生数据库:

要求:

  1. 创建学生表;
  2. 插入10条数据;
  3. Python读取;
  4. 查询平均成绩;
  5. 保存为CSV。

《Python数据预处理》

第二章 数据获取与存储

第8课时教学设计

主题:

综合实战:遍历文件批量抽取文本内容

——从单文件处理到批量数据处理


一、课程基本信息

项目 内容
章节 第二章 数据获取与存储
课时 第8课时
主题 文件遍历与批量文本抽取
教学方式 案例教学+代码实践+综合实验
实验编号 实验8
对应教材 2.5 实战1:遍历文件批量抽取文本内容

二、本课教学目标

(一)知识目标

学生能够:

  1. 理解批量数据处理思想;
  2. 掌握文件遍历基本方法;
  3. 掌握Python读取文本文件方法;
  4. 理解数据采集、读取、整理的完整流程。

(二)能力目标

学生能够:

  1. 使用Python遍历指定文件夹;
  2. 批量读取多个文本文件;
  3. 提取文件中的有效信息;
  4. 将处理结果保存为新的数据文件。

(三)素养目标

培养学生:

  • 自动化处理意识;
  • 数据工程思维;
  • 面向实际问题编程能力。

三、本课内容分析

前面课程学习了:

单个数据处理

例如:

读取:

student.csv

处理:

student.json

保存:

result.csv

但是实际工作中:

数据通常不是一个文件。

例如:

企业每天产生:

销售数据/
 |
 ├──2026-01.csv
 |
 ├──2026-02.csv
 |
 ├──2026-03.csv
 |
 └──2026-04.csv

如果人工处理:

效率低。

因此需要:

批量数据处理。


教材本节设计的实战任务为:

通过遍历文件夹中的文件,批量读取文本内容并进行抽取处理。


四、教学重点与难点

(一)教学重点

重点1:文件遍历

掌握:

Python访问:

  • 文件夹;
  • 文件列表;
  • 文件路径。

重点2:批量处理思想

从:

单个文件:

open("a.txt")

发展到:

多个文件:

for file in files:
    open(file)

重点3:文本信息抽取

包括:

  • 文件读取;
  • 字符串处理;
  • 结果保存。

(二)教学难点

难点1:

理解路径管理。

例如:

文件:

data/a.txt

程序需要知道:

文件在哪里。


难点2:

循环处理多个文件。

学生容易写:

open("a.txt")
open("b.txt")
open("c.txt")

但是实际:

文件数量可能:

10000个。

需要:

循环。


五、教学导入(10分钟)

教师提出案例:

某企业拥有:

10000份客户反馈文本。

目录:

feedback

├──001.txt

├──002.txt

├──003.txt

...

└──10000.txt

需求:

统计所有反馈中:

“满意”

出现次数。


如果人工:

打开一个文件;

复制内容;

统计。

需要:

几天。

如果Python:

几秒完成。

引出:

批量文本处理。


六、知识讲授

6.1 文件和目录

文件

数据存储基本单位。

例如:

student.txt

目录

管理文件的容器。

例如:

data

├──a.txt

├──b.txt

6.2 Python文件路径管理

常用模块:

os模块

作用:

操作系统接口。

导入:

import os

获取当前目录

os.getcwd()

结果:

C:\data

查看目录文件

os.listdir()

结果:

[
'a.txt',
'b.txt'
]

拼接路径

os.path.join(
"data",
"a.txt"
)

结果:

data/a.txt

6.3 文件遍历

方法1:

for循环

示例:

import os


files=os.listdir(
"data"
)


for file in files:

    print(file)

结果:

a.txt

b.txt

c.txt

方法2:

递归遍历

适用于:

多层文件夹。

例如:

data

├──2025

│   ├──01.txt

│

└──2026

    └──02.txt

使用:

os.walk()

6.4 文本文件读取

方法1:

read()

读取全部内容。

with open(
"a.txt",
"r",
encoding="utf-8"
) as f:

    text=f.read()

方法2:

逐行读取

for line in f:

    print(line)

6.5 文本信息抽取

文本:

姓名:张三
年龄:20
成绩:90

目标:

提取:

张三
20
90

方法:

字符串处理。


常用:

split()

分割字符串。

例如:

text="姓名:张三"


text.split(":")

结果:

['姓名','张三']

replace()

替换文本。

例如:

text.replace(
"旧",
"新"
)

6.6 批量处理流程

完整流程:

获取文件列表

↓

遍历文件

↓

读取内容

↓

提取信息

↓

保存结果


七、综合案例分析

案例:

新闻文本批量分析

文件:

news

├──01.txt

├──02.txt

├──03.txt

每个文件:

标题:人工智能发展

作者:张三

内容:……

目标:

提取:

标题。


处理流程:

第一步

获取所有txt文件。


第二步

逐个打开。


第三步

读取文本。


第四步

提取标题。


第五步

保存CSV。


八、实验8

遍历文件批量抽取文本内容实验


1. 实验名称

批量文本文件信息提取


2. 实验目的

掌握:

  1. 文件夹遍历;
  2. 批量文件读取;
  3. 文本内容处理;
  4. 结果保存。

3. 实验环境

软件:

  • Python3
  • Jupyter Notebook

使用模块:

os

4. 实验准备

创建文件夹:

text_data

创建三个文件:

a.txt

内容:

姓名:张三
成绩:90

b.txt

内容:

姓名:李四
成绩:85

c.txt

内容:

姓名:王五
成绩:95

5. 实验步骤

步骤1:

导入模块

import os

步骤2:

获取文件列表

path="text_data"


files=os.listdir(path)


print(files)

结果:

[
'a.txt',
'b.txt',
'c.txt'
]

步骤3:

循环读取文件

for file in files:

    filepath=os.path.join(
        path,
        file
    )


    with open(
        filepath,
        "r",
        encoding="utf-8"
    ) as f:

        content=f.read()


    print(content)

结果:

姓名:张三
成绩:90


姓名:李四
成绩:85


姓名:王五
成绩:95

步骤4:

提取成绩

代码:

results=[]


for file in files:

    filepath=os.path.join(
        path,
        file
    )


    with open(
        filepath,
        "r",
        encoding="utf-8"
    ) as f:

        text=f.read()


    score=text.split(
        "成绩:"
    )[1]


    results.append(score)


print(results)

结果:

['90','85','95']

步骤5:

保存结果

with open(
"result.txt",
"w",
encoding="utf-8"
) as f:

    for score in results:

        f.write(
        score+"\n"
        )

九、实验结果

生成:

result.txt

内容:

90

85

95

十、实验分析

本实验完成:

多文件数据采集流程

文件夹

↓

多个文本

↓

批量读取

↓

信息抽取

↓

结果保存

相比人工:

优势:

  1. 速度快;
  2. 不易出错;
  3. 可处理大量文件。

十一、综合项目扩展

项目:

企业客户反馈分析

数据:

10000份txt文件。

任务:

任务1

统计文件数量。


任务2

统计关键词:

满意
投诉
退款

出现次数。


任务3

生成统计表:

CSV。


十二、课堂讨论

问题1:

为什么批量处理比人工处理更适合大数据?

答案:

因为:

  • 数据规模大;
  • 规则固定;
  • 自动化效率高。

问题2:

如果文件夹中有100万个文件怎么办?

答案:

需要:

  • 分批处理;
  • 数据库存储;
  • 并行计算。

问题3:

文本数据属于什么类型?

答案:

通常属于:

非结构化数据。


十三、第二章总结

第二章核心知识体系:

数据来源

↓

数据获取

↓

数据存储

↓

数据读取

↓

数据处理


第二章知识结构图

数据获取与存储

│

├── 数据类型

│      ├──结构化

│      ├──半结构化

│      └──非结构化

│

├── 网络爬虫

│      ├──请求

│      ├──解析

│      └──保存

│

├── 文件读写

│      ├──CSV

│      ├──Excel

│      ├──JSON

│      └──XML

│

├── 数据库

│      ├──MySQL

│      └──SQL

│

└── 批量数据处理


十四、第二章实验汇总

编号 实验名称 课时
实验1 数据类型识别实验 第1课时
实验2 Excel/CSV/JSON/XML读取实验 第2课时
实验3 Requests网页数据获取实验 第3课时
实验4 BeautifulSoup网页解析实验 第4课时
实验5 Pandas文件读写实验 第5课时
实验6 JSON/XML解析实验 第6课时
实验7 Python数据库操作实验 第7课时
实验8 批量文本抽取综合实验 第8课时

十五、第二章综合作业

理论部分

  1. 数据获取有哪些主要来源?

  2. 结构化数据和非结构化数据有什么区别?

  3. 网络爬虫有哪些基本步骤?

  4. JSON为什么适合网络数据传输?

  5. 数据库相比文件存储有什么优势?


实践部分

完成一个小型数据处理项目:

要求:

数据获取:

任选一种:

  • CSV;
  • 网络数据;
  • JSON接口。

数据处理:

完成:

  • 数据读取;
  • 数据清洗;
  • 数据统计。

数据保存:

保存为:

  • CSV;
  • JSON;
  • 数据库。

Logo

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

更多推荐