我们生活在多维的世界,数据亦然。电影《黑客帝国》中,人类生存在一个数据的世界中,所见识到的一切事物,包括味觉嗅觉等等,均由数据所构成。机器通过矩阵将人类串联起来,构成世界的基本元素,就是数据。
数据的维度无处不在。通常而言,数据的维度是数据的组织形式,据此区分为一维数据,二维数据,多维数据和高维数据:
- 一维数据由具有对等关系的有序或无序数据以线性方式构成,如列表和集合,对应数学中的数组。
- 二维数据,由多个一维数据构成,是一维数据的组合形式,也称表格数据,如列表,对应数学中的矩阵。
- 多维数据为一维或二维数据在新维度上的扩展,比如时间维度。
- 高维数据以简单的二元关系展示数据间的复杂结构,可以多层嵌套,如字典,JSON,XML等。
1、一维数据
一维数据是最简单的数据组织类型。其表示形式有二,如果数据有序,使用列表类型[];如果数据无序,则使用集合类型{}。
1.1 一维数据的存储
方式主要有以下几种:
分隔符 | 示例 | 备注 |
---|---|---|
空格 | 苹果 香蕉 李子 芒果 榴莲 | 元素中不能有空格 |
逗号 | 苹果,香蕉,李子,芒果,榴莲 | 元素中不能有逗号 |
换行符 | 苹果\n香蕉\n李子\n芒果\n榴莲 | |
特殊符号 | 苹果@香蕉@李子@芒果@榴莲 |
注意,上述标点符号均为英文标点符号,也即半角符号。
无论采用任何方式分割和表示,一维数据都具有线性的特点,for循环可以遍历数据,进而对每个数据进行处理。
1.2 一维数据的读取
txt=open('file').read() #file为欲读取的文件路径及名称
ls=txt.split() #根据相应分隔符进行分割
txt.close()
1.3 一维数据的写入
ls=[...] #欲写入列表
f=open('file','w') #欲写入文件
f.write(' ',join(ls)) #欲写入分隔符
f.close()
2、二维数据
二维数据常见的表示形式为二维列表,类似于平面直角坐标系,由行(row)和列(column)来确定某个元素。外层列表中每个元素可以对应一行,也可以对应一列,需要使用两层for循环遍历每个元素。
2.1 二维数据的存储
二维数据常用CSV(Comma-Separated Values)格式来存储。CSV文件的每一行是一维数据,整个CSV文件是一个二维数据。
CSV为国际通用的一、二维数据存储格式,是数据转换的标准格式,一般以.csv为扩展名,可为Excel等编辑软件读取、编辑及另存,其规范如下:
- 开头不留空,以行为单位。
- 可含或不含表头,表头居文件第一行,可另行存储。
- 一行数据不跨行,无空行。
- 以半角逗号(,)作分隔符,元素缺失也要保留。
- 列内容如存在半角引号(”),替换成半角双引号(””)转义。
- 文件读、写时引号,逗号操作规则互逆。
- 内码格式不限,可为 ASCII、Unicode 或者其他。
- 不支持特殊字符
CSV数据按行或按列存储取决于程序,一般索引习惯 ls[row][column] ,先行后列。
排名 | 医院名称 | 专科声誉 | 科研学术 | 综合得分 |
1 | 中国医学科学院北京协和医院 | 80 | 15.396 | 95.396 |
2 | 四川大学华西医院 | 69.57 | 20 | 89.57 |
3 | 中国人民解放军总医院 | 58.658 | 12.734 | 71.392 |
4 | 复旦大学附属中山医院 | 32.254 | 12.032 | 44.286 |
5 | 上海交通大学医学院附属瑞金医院 | 32.807 | 11.436 | 44.243 |
6 | 华中科技大学同济医学院附属同济医院 | 23.676 | 14.15 | 37.826 |
7 | 复旦大学附属华山医院 | 25.232 | 9.415 | 34.647 |
8 | 中山大学附属第一医院 | 23.345 | 10.93 | 34.275 |
9 | 华中科技大学同济医学院附属协和医院 | 19.485 | 14.1 | 33.585 |
10 | 浙江大学医学院附属第一医院 | 17.002 | 14.06 | 31.062 |
文件存储为医院排行榜.csv,格式为:
排名,医院名称,专科声誉,科研学术,综合得分
1,中国医学科学院北京协和医院,80,15.396,95.396
2,四川大学华西医院,69.57,20,89.57
3,中国人民解放军总医院,58.658,12.734,71.392
4,复旦大学附属中山医院,32.254,12.032,44.286
5,上海交通大学医学院附属瑞金医院,32.807,11.436,44.243
6,华中科技大学同济医学院附属同济医院,23.676,14.15,37.826
7,复旦大学附属华山医院,25.232,9.415,34.647
8,中山大学附属第一医院,23.345,10.93,34.275
9,华中科技大学同济医学院附属协和医院,19.485,14.1,33.585
10,浙江大学医学院附属第一医院,17.002,14.06,31.062
2.2 二维数据的读取
f=open('医院排行榜.csv')
ls=[]
for line in f:
line=line.replace('\n','') #或以.strip('\n')函数删除回车符
ls.append(line.split(','))
for line in ls[:4]: #打印前三名
line=','.joint(line)
print(line)
f.close()
排名,医院名称,专科声誉,科研学术,综合得分
1,中国医学科学院北京协和医院,80,15.396,95.396
2,四川大学华西医院,69.57,20,89.57
3,中国人民解放军总医院,58.658,12.734,71.392
>>>
2.3 二维数据的写入
覆盖写入和追加写入有所不同
wls=[['排名', '医院名称', '专科声誉', '科研学术', '综合得分'],\
['1', '中国医学科学院北京协和医院', '80', '15.396', '95.396'],\
['2', '四川大学华西医院', '69.57', '20', '89.57'],\
['3', '中国人民解放军总医院', '58.658', '12.734', '71.392']]
file=open('new.csv','w')
for item in wls:
file.write(','.join(item)+'\n')
file.close()
结果在当前目录下生成文件new.csv,其存储格式为:
排名,医院名称,专科声誉,科研学术,综合得分
1,中国医学科学院北京协和医院,80,15.396,95.396
2,四川大学华西医院,69.57,20,89.57
3,中国人民解放军总医院,58.658,12.734,71.392
追加写入,原文件被改写:
als=[['11','空军军医大学西京医院','22.974','7.771','30.745'],\
['12','北京大学第一医院','20.523','9.398','29.921']]
f=open('医院排行榜.csv','a')
f.seek(2)
for item in als:
f.write('\n'+','.join(item))
f.close()
排名,医院名称,专科声誉,科研学术,综合得分
1,中国医学科学院北京协和医院,80,15.396,95.396
2,四川大学华西医院,69.57,20,89.57
3,中国人民解放军总医院,58.658,12.734,71.392
4,复旦大学附属中山医院,32.254,12.032,44.286
5,上海交通大学医学院附属瑞金医院,32.807,11.436,44.243
6,华中科技大学同济医学院附属同济医院,23.676,14.15,37.826
7,复旦大学附属华山医院,25.232,9.415,34.647
8,中山大学附属第一医院,23.345,10.93,34.275
9,华中科技大学同济医学院附属协和医院,19.485,14.1,33.585
10,浙江大学医学院附属第一医院,17.002,14.06,31.062
11,空军军医大学西京医院,22.974,7.771,30.745
12,北京大学第一医院,20.523,9.398,29.921
2.4 二维数据的逐一处理
采用二层循环
als=[['11','空军军医大学西京医院','22.974','7.771','30.745'],\
['12','北京大学第一医院','20.523','9.398','29.921']]
for row in als:
for column in row:
print(column)
11
空军军医大学西京医院
22.974
7.771
30.745
12
北京大学第一医院
20.523
9.398
29.921
>>>
3、高维数据
高维数据由键值对类型的数据构成,采用对象方式组织,相比一维和二维数据能表达更加灵活和复杂的数据关系。由此衍生出HTML,XML、JSON等语法结构,是当今Internet组织内容的主要形式。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/106953.html