Python入门笔记07 | 文件和数据格式化
一、文件的类型
文件是数据的抽象和集合
(1)文件是存储在辅助存储器上的数据序列
(2)文件是数据存储的形式
(3)文件的展现形态:文本文件和二进制文件
1. 文本文件:由单一特定编码组成的文件,如UTF-8编码
由于存在编码,也被看成是存储着的长字符串
例如:.txt文件、.py文件
- 例
2.二进制文件 :直接由比特0和1组成,没有统一字符编码
一般存在二进制0和1的组织结构,即文件格式
例如:.png文件、.avi文件
- 例
二、文件的打开和关闭
文件处理的步骤:打开-操作-关闭
1. 文件的打开
(1)绝对路径:\在python中意为转义符,因此在提供路径时,应该使用 / 或 \ 表示 \
(2)相对路径:从可执行程序的当前目录起,寻找路径
(3)当前程序与所打开文件在相同目录下:直接使用文件名称
2. 打开模式
- 实例
3. 文件的关闭
三、 文件内容的读取
1. 三种文件的读取方法
2.文件的全文本操作:遍历文件的全部信息
(1)方法1:一次读入,统一处理
(2)方法2:按数量读入,逐步处理
3. 文件的逐行操作
(1)方法1:一次读入,分行处理
(2)方法2:分行读入,逐行处理
四、 数据的文件写入
- 例
–此时文件的指针位于文件的在最后面,此时再调用for…in的方式,遍历的是从指针当前位置的文件结尾处取出其中每一行并打印输出,而写入文件的内容在指针前,因此这段代码不输出任何内容
–需要调整当前文件的指针,回到文件初始位置
-
实例11:自动轨迹的绘制
-
需求:根据脚本来绘制图形,不是写代码,而是写数据绘制轨迹
数据脚本是自动化最重要的第一步
-
基本思路
–步骤1:定义数据文件格式(接口)
–步骤2:编写程序,根据文件接口解析参数绘制图形
–步骤3:编址数据文件 -
数据接口定义
-
代码
#AutoTraceDrwa.py
import turtle as t
t.title('自动轨迹绘制')
t.setup(800,600,0,0)
t.pencolor("red")
t.pensize(5)
#数据读取
datals = []
f = open("data.txt")
for line in f:
line = line.replace("\n","")
#map函数是Python提供的内嵌函数,将第一个参数的功能作用于第二个参数的每一个元素
datals.append(list(map(eval,line.split(","))))
f.close()
print(datals)
#自动绘制
for i in range(len(datals)):
t.pencolor(datals[i][3],datals[i][4],datals[i][5])
t.fd(datals[i][0])
if datals[i][1]:
t.right(datals[i][2])
else:
t.left(datals[i][2])
- 效果
五、 一维数据的格式化和处理
1. 数据组织维度
维度:一组数据的组织形式
一维数据:由对等关系的有序或无序顺序构成,采用线性方式组织 -> 对应列表、数组、集合等概念
二维数据:由多个一维数据构成,是一维数据的组合形式 -> 表格
高维数据:仅利用最基本的二元关系展示数据间的复杂结构 ->键值对
操作周期:存储->表示->操作
2. 一维数据的表示 - 如果数据间有序:使用列表类型
- 如果数据间无序:使用集合类型
3. 一维数据的存储
(1)空格分隔
使用一个或多个空格分隔进行存储,不换行
缺点:数据中不能存在空格
(2)逗号分隔
使用英文半角逗号分隔数据进行存储,不换行
缺点:数据中不能存在英文逗号
(3)其他方式
使用其他符号或符号组进行分隔,建议采用特殊符号
缺点:需要根据数据特点定义,通用性较差
4. 一维数据的处理:存储 <-> 表示
(1)从空格分隔的文件中读入数据
(2)从特殊符号分隔的文件中读入数据
(3)采用空格分隔方式将数据写入文件
(4)采用特殊分隔方式将数据写入文件
六、 二维数据的格式化和处理
1. 二维数据的表示:使用列表类型 -> 二维列表
2. CSV格式与二维数据的存储
CSV:Comma-Separated Values;
用逗号分割值的一种存储方式
–国际通用的一二维数据存储格式,一般.csv扩展名
–每行一个一维数据,采用逗号分割,无空行
特殊规定:
(1)如果某个元素缺失,逗号仍要保留
(2)二维数据的表头可以作为数据存储,也可以另行存储
(3)一般索引习惯 ls[row][column],先行后列
3. 二维数据的处理
(1)从CSV格式的文件中读入数据
(2)将数据写入CSV格式的文件
(3)二维数据的逐一处理 二层循环
**七、 wordcloud库的使用
wordcloud库是优秀的词云展示第三方库
–作用:将一段文本变成一个词云
–词云:以词语为基本单位通过图形可视化的方式直观和艺术地展示出来
1. 基本使用
wordcloud库把词云当做一个WordCloud对象
1)wordcloud.WordCloud()代表一个文本对应的词云
2)可以根据文本中词语出现的频率等参数绘制词云
3)绘制词云的形状、颜色、尺寸都可以设定
2. 常规方法
w = wordcloud.WordCloud()
1)以WordCloud对象为基础
2)配置参数、加载文本、输出文件
(1)步骤:
1)配置对象参数
2)加载词云文本
3)输出词云文件
(2)配置对象参数
- 实例12 政府工作报告词云
- 需求:对于政府工作报告等政策文件,如何直观理解?->生成词云&优化词云
- 代码
#GovRptWordCloudv1
import wordcloud
import jieba
f = open("新时代中国特色社会主义.txt","r",encoding="utf-8")
t = f.read()
f.close()
ls = jieba.lcut(t)
txt = " ".join(ls)
w = wordcloud.WordCloud(font_path="msyh.ttc",\
width=1000,height=700,background_color="white")
w.generate(txt)
w.to_file("grwordcloud.jpg")
- 结果
- 更有形的词云(代码)
#GovRptWordCloudv2
import wordcloud
import jieba
from imageio import imread
mask = imread("fivestar.jpg")
f = open("关于实施乡村振兴战略的意见.txt","r",encoding="utf-8")
t = f.read()
f.close()
ls = jieba.lcut(t)
txt = " ".join(ls)
w = wordcloud.WordCloud(font_path="msyh.ttc",mask=mask,\
width=1000,height=700,background_color="white",\
)
w.generate(txt)
w.to_file("grwordcloud.jpg")
- 更有形的结果
- 第七周测验题
- 文本的平均列数
f = open("latex.log")
s,c = 0,0
for line in f:
line = line.strip("\n")
if line == "":
continue
else:
s += len(line)
c += 1
print(round(s/c))
注意:for line in f获取的line包含每行最后的换行符(\n),所以,去掉该换行符进行统计。
- CSV格式清洗与转换
f = open("data.csv")
ls = f.readlines()
ls = ls[::-1]
lt = []
for item in ls:
item = item.strip("\n")
item = item.replace(" ","")
lt = item.split(",")
lt = lt[::-1]
print(";".join(lt))
f.close()
注意:使用strip()方法去掉每行最后的回车,使用replace()去掉每行元素两侧的空格。
注:笔记内容根据慕课:Python语言程序设计(北京理工大学 嵩天、黄天羽、礼欣)授课内容整理