7.27.4课程导学
前情回顾:
数字类型及操作
- 整数类型的无限范围及4种进制表示
- 浮点数类型的近似无限范围、小尾数及科学计数法
+
、-
、*
、/
、//
、%
、**
、二元增强赋值操作符abs()
、divmod()
、pow()
、round()
、max()
、min()
int()
、float()
、complex()
字符串类型及操作
程序的分支结构
- 单分支if 二分支if-else及紧凑形式
- 多分支if-elif-else及条件之间关系
- not and or > >= == <= < !=
- 异常处理try-except-else-finally
程序的循环结构
- for.…in 遍历循环:计数、字符串、列表、文件...
- while无限循环
- continue和break保留字:退出当前循环层次
- 循环else的高级用法:与break有关
函数的定义与使用
- 使用保留字def定义函数,1ambda定义匿名函数
- 可选参数(赋初值)、可变参数(*b)、名称传递
- 保留字return可以返回任意多个结果
- 保留字g1oba1声明使用全局变量,一些隐式规则
代码复用与函数递归
-模块化设计:松耦合、紧耦合
-函数递归的2个特征:基例和链条
-函数递归的实现:函数+分支结构
集合类型及操作
- 集合使用{}和set()函数创建
- 集合间操作:交(&)、并(|)、差(-)、补(^)、比较(>=<)
- 集合类型方法:.add()、.discard()、.pop()等
- 集合类型主要应用于:包含关系比较、数据去重
序列类型及操作
- 序列是基类类型,扩展类型包括:字符串、元组和列表
- 元组用()和tuple()创建,列表用[]和list()创建
- 元组操作与序列操作基本相同
- 列表操作在序列操作基础上,增加了更多的灵活性
字典类型及操作
- 映射关系采用键值对表达
- 字典类型使用{}和dict()创建,键值对之间用:分隔
- d[key]方式既可以索引,也可以赋值
- 字典类型有一批操作方法和函数,最重要的是.get()
本课概要
文件和数据格式化
- 7.1 文件的使用
- 7.2 实例:自动轨迹绘制
- 7.3 一维数据的格式化和处理
- 7.4 二维数据的格式化和处理
- 7.5 模块:wordcloud库的使用
- 7.6 实例:政府工作报告词云
方法论
- 从Python角度理解的文件和数据表示
实践能力
- 学会编写带有文件输入输出的程序并能实现对数据的表示和操作
7.28.1文件的使用
- 文件的类型
- 文件的打开和关闭
- 文件内容的读取
- 数据的文件写入
文件的理解
- 文件是数据的抽象和集合
- 文件是存储在辅助存储器上的数据序列
- 文件是数据存储的一种形式
- 文件展现形态:文本文件和二进制文件
文本文件
文件是数据的抽象和集合
- 由单一特定编码组成的文件,如
UTF-8
编码 - 由于存在编码,也被看成是存储着的长字符串
- 适用于例如:
.txt
文件、.py
文件
二进制文件
文件是数据的抽象和集合
- 直接由比特0和1组成,没有统一字符编码
- 一般存在二进制0和1的组织结构,即文件格式
- 适用于例如:
.png
文件、.avi
文件等
文本文件vs.二进制文件
若要输出二进制格式:
文件的打开和关闭
文件的打开
文件路径(目的:找到文件)
打开模式
文件的关闭
文件内容的读取
文件的全文本操作
文件的逐行操作
数据的文件写入
因为写入数据后文件指针在文件的下方(结尾处)
循环在读取时是从头部遍历的
可以按照下图加以修改:
总结:文件的使用
- 文件的使用方式:打开-操作-关闭
在“操作”中有3个文件读取方法和3个文件写入方法
- 文本文件&二进制文件,
open(,)
和.close()
文件的两种形式可由open函数和其打开模式进行调整
- 文件内容的读取:
.read() .readline() .readlines()
- 数据的文件写入:
.write() .writelines() .seek()
7.28.2实例:自动轨迹绘制
“自动轨迹绘制”问题分析
自动轨迹绘制
- 需求:根据脚本来绘制图形
- 不是写代码而是写数据绘制轨迹
- 数据脚本是自动化最重要的第一步(脚本、数据接口)
数据接口定义(非常具有个性色彩)
例如:以下数据中,假定每行表示一次操作,每行都有6个数据,中间是用逗号分隔,第一个参数表示当前位置开始,向前行进的距离,第二个参数表示转向判断,如果数据是0,让当前的画笔向左转;如果是1,则向右转;第三个参数表示向左转或向右转的绝对转向角度;后三个参数表示画这一段曲线或直线过程中RGB三个通道的颜色这三个参数的取值范围是[0,1]之间的浮点数。
代码:
数据文件:
“自动轨迹绘制”举一反三
代码回顾:
理解方法思维
- 自动化思维:数据和功能分离,数据驱动的自动运行
- 接口化设计:格式化设计接口,清晰明了
- 二维数据应用:应用维度组织数据,二维数据最常用
应用问题的扩展
- 扩展接口设计,增加更多控制接口
- 扩展功能设计,增加弧形等更多功能
- 扩展应用需求,发展自动轨迹绘制到动画绘制
7.30.1一维数据的格式化和处理
一维数据的格式化和处理
- 数据组织的维度
- 一维数据的表示
- 一维数据的存储
- 一维数据的处理
数据组织的维度
从一个数据到一组数据
维度:一组数据的组织形式
一维数据
二维数据
多维数据
高维数据
一维数据的格式化和处理
数据的操作周期
一维数据的表示
如果数据间有序:使用列表类型ls=[3.1398,3.1349,3.1376]
- 列表类型可以表达一维有序数据
- for循环可以遍历数据,进而对每个数据进行处理
如果数据间无序:使用集合类型st = {3.1398,3.1349,3.1376} - 集合类型可以表达一维无序数据
- for循环可以遍历数据,进而对每个数据进行处理
一维数据的存储
存储方式一:空格分隔
中国 美国 日本 德国 法国 英国 意大利
- 使用一个或多个空格分隔进行存储,不换行
- 缺点:数据中不能存在空格
存储方式二:逗号分隔
中国,美国,日本,德国,法国,英国,意大利
- 使用英文半角逗号分隔数据进行存储,不换行
- 缺点:数据中不能有英文逗号
存储方式三:其他方式
中国$美国$日本德国$法国$英国$意大利
- 使用其他符号或符号组合分隔,建议采用特殊符号
- 缺点:需要根据数据特点定义,通用性较差
一维数据的格式化和处理
一维数据的读入处理
一维数据的写入处理
单元小结
一维数据的格式化和处理
- 数据的维度:一维、二维、多维、高维
- 一维数据的表示:列表类型(有序)和集合类型(无序)
- 一维数据的存储:空格分隔、逗号分隔、特殊符号分隔
- 一维数据的处理:字符申方法
.split()
和.join()
7.30.2二维数据的格式化和处理
二维数据的格式化和处理
- 二维数据的表示
CSV
数据存储格式- 二维数据的存储
- 二维数据的处理
二维数据的表示
一二维数据的Python表示
数据维度是数据的组织形式
CSV
格式与二维数据存储CSV
数据存储格式
(CSV
:Comma-Separated Values
)
按行存?按列存?
- 按行存或者按列存都可以,具体由程序决定
- 一般索引习惯:
ls[row][column]
,先行后列 - 根据一般习惯,外层列表每个元素是一行,按行存
二维数据的处理
二维数据的读入处理
从CSV
格式的文件中读入数据
二维数据的读入处理
将数据写入CSV
格式的文件
二维数据的逐一处理(采用二层循环)
单元小结:
二维数据的格式化和处理
7.30.3模块:wordcloud
库的使用
wordcloud
库概述
- 词云以词语为基本单位,更加直观和艺术的展示文本
wordcloud
库基本使用
wordcloud
库常规方法
效果:
配置对象参数
wordcloud
应用实例
将文本通过jieba
的lcut
函数变为列表,再将列表中的文本使用空格字符串分隔开来,构成一个长字符串,那么这个长字符串将会被赋给WordCloud
对象,最后使用to_file将词云输出。
效果:
总结:
再调用词云库
7.30.4实例:政府工作报告词云
“政府工作报告词云”问题分析
直观理解政策文件
- 需求:对于政府工作报告等政策文件,如何直观理解?
- 体会直观的价值:生成词云&优化词云
政府工作报告词云
基本思路
- 步骤1:读取文件、分词整理
- 步骤2:设置并输出词云
- 步骤3:观察结果,优化迭代
“政府工作报告词云”实例讲解(下)
需提供要生成形状的白色图片
效果:
举一反三:
扩展能力
- 了解
wordcloud
更多参数,扩展词云能力 - 特色词云:设计一款属于自己的特色词云风格
- 更多文件:用更多文件练习词云生成
版权属于:soarli
本文链接:https://blog.soarli.top/archives/412.html
转载时须注明出处及本声明。