数据的维度及格式化

导读:本篇文章讲解 数据的维度及格式化,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

        我们生活在多维的世界,数据亦然。电影《黑客帝国》中,人类生存在一个数据的世界中,所见识到的一切事物,包括味觉嗅觉等等,均由数据所构成。机器通过矩阵将人类串联起来,构成世界的基本元素,就是数据。

        数据的维度无处不在。通常而言,数据的维度是数据的组织形式,据此区分为一维数据,二维数据,多维数据和高维数据

  • 一维数据由具有对等关系的有序或无序数据以线性方式构成,如列表和集合,对应数学中的数组。
  • 二维数据,由多个一维数据构成,是一维数据的组合形式,也称表格数据,如列表,对应数学中的矩阵。
  • 多维数据为一维或二维数据在新维度上的扩展,比如时间维度
  • 高维数据以简单的二元关系展示数据间的复杂结构,可以多层嵌套,如字典,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] ,先行后列。

        以2020年全国医院综合排行榜为例

排名 医院名称 专科声誉 科研学术 综合得分
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

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!