soarli

Python语言基础程序设计-文件和数据格式化
7.27.4课程导学前情回顾:数字类型及操作整数类型的无限范围及4种进制表示浮点数类型的近似无限范围、小尾数及科学...
扫描右侧二维码阅读全文
10
2019/07

Python语言基础程序设计-文件和数据格式化

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应用实例

将文本通过jiebalcut函数变为列表,再将列表中的文本使用空格字符串分隔开来,构成一个长字符串,那么这个长字符串将会被赋给WordCloud对象,最后使用to_file将词云输出。

效果:

总结:

再调用词云库

7.30.4实例:政府工作报告词云

“政府工作报告词云”问题分析

直观理解政策文件

  • 需求:对于政府工作报告等政策文件,如何直观理解?
  • 体会直观的价值:生成词云&优化词云

政府工作报告词云

基本思路

  • 步骤1:读取文件、分词整理
  • 步骤2:设置并输出词云
  • 步骤3:观察结果,优化迭代

“政府工作报告词云”实例讲解(下)

需提供要生成形状的白色图片

效果:

举一反三:

扩展能力

  • 了解wordcloud更多参数,扩展词云能力
  • 特色词云:设计一款属于自己的特色词云风格
  • 更多文件:用更多文件练习词云生成
最后修改:2020 年 05 月 01 日 05 : 51 PM

发表评论