一维数据的格式化和处理
数据组织的维度
从一个数据到一组数据
3.14 一个数据,表达一个含义
3.1433,3.1398 ,3.5566一组数据,表达一个或多个含义
维度:一组数据的组织形式
线性方式进行组织:3.1413,3.1398,3.1403
二维方式进行组织:以x,y坐标轴形式的进行排列的数据
3.1398 | 3.1349 | 3.1376 |
3.1413 | 3.1404 | 3.1401 |
根据组织数据时与数据有联系的参数的数量,数据可分为:
一维数据:由对等关系的有序或无序数据构成,采用线性方式组织对应列表、数组和集合等概念。
二维数据:由多个一维数据构成,是一维数据的组合形式(对应数学中的矩阵和二维数组)
表格是典型的二维数据,其中,表头是二维数据的一部分。
多维数据:由一维或二维数据在新维度上扩展形成
例如:中国大学生排行榜有2016的,也有2017的,也有2018的。在时间维度的扩展就形成了多维数据。
高维数据:仅利用最基本的二元关系展示数据间的复杂结构。
例如:字典类型中,用键值对(键值时间可以进行有效组织,表达更复杂的逻辑关系)表示值和属性间的关系
对于数据而言,有一个操作周期的概念,由于数据必须存在才能处理,我们将数据分为数据存储,数据表示,数据操作,三个阶段。
数据存储:数据在磁盘中的存储状态
数据表示:程序表达数据的方式,关心数据类型
数据操作:如果数据能够由程序中的数据类型进行很好的表达,我们就可以借助这样的数据类型对数据进行操作。
数据存储(存储格式)可以到数据表示(数据类型),数据表示到数据操作(操作方式),当然,也可以由数据操作(操作方式)到数据表示(数据类型),数据表示(数据类型)到数据存储(存储格式)。
一维数据的表示:
指的是我们如何用程序的类型来表达一维数据
如果数据间有序,使用列表类型
ls=[3.1398,3.1349,1.1376]
列表类型可以表达一维有序数据
列表类型是表达一维数据尤其是一维有序数据最合理的数据结构。
如果数据间无序,使用集合类型
st={3.1398,3.1349,1.1376}
集合类型可以表达一维无序数据
集合类型是表达一组无序数据最好的结构。
for循环可以遍历数据,进而对每个数据进行处理。
一维数据的存储:
存储方式一:空格分隔
中国 美国 日本 法国 德国
使用一个或多个空格分隔进行存储,不换行
缺点:数据中不能存在空格
存储方式二:逗号分隔
中国,美国,日本,法国,德国
使用英文半角逗号分隔数据进行存储,不换行
缺点:数据中不能有英文逗号
可以使用其他的符号或者一些符号组合来进行分隔存储,一般采用特殊符号
存储方式三:其他方式
中国$美国$日本
使用其他符号或符号组合分隔,建议采用特殊符号
缺点:需要根据数据特点定义,通用性较差
如上所示,在存储一维数据时可使用不同的特殊字符分隔数据元素,但有以下几点需要注意:
(1)同一文件或同组文件一般使用同一分隔符分隔
(2)分隔数据的分隔符不应出现在数据中
(3)分隔符为英文半角符号,一般不使用中文符号作为分隔符。
一维数据的处理:
这里所说的处理是指一维数据的数据存储格式和一维数据的列表或者集合的表示方式之间的一种转换。
即数据存储(存储格式)和数据表示(数据类型)之间的转换
即将存储的数据读入程序,将程序表示的数据写入文件
一维数据的读入处理:
从空格分隔的文件中读入数据:
文件为:
代码示例如下:
with open('rgf',mode='r',encoding="utf-8")as f: txt=f.read() ls=txt.split() print(ls)
运行界面如下:
从特殊符号分隔的文件中读入数据:
文件为:
示例代码如下:
with open('rgf',mode='r',encoding="utf-8")as f: txt=f.read() ls=txt.split("$") print(ls)
运行界面如图:
采用空格分隔方式将数据写入文件:
代码示例如下:
with open('rgf',mode='w',encoding="utf-8")as f: ls=['沃尔','历史上','第一','控卫'] f.write(("".join((ls))))
运行界面如图所示:
采用特殊分隔方式将数据写入文件:
代码示例如下:
with open('rgf',mode='w',encoding="utf-8")as f: ls=['沃尔','历史上','第一','控卫'] f.write(("$".join((ls))))
运行界面如下: