一二维数据的格式化和处理

数据组织的维度

数据组织可以分为一维数据、二维数据和高位数据

一维数据:由对等关系的有序或无序数据构成,采用线性方式组织,对应于数学中的数组和集合等概念。一维数据都具有线性特点。

二维数据:也称为表格数据,由关联关系数据构成,采用表格方式组织,对应于数学中的矩阵,常见的表格都属于二维数据。

高维数据:由键值对类型的数据构成,采用对象方式组织,属于整合度更好的数据组织方式。高维数据在网络系统中十分常用,HTML、XML、JSON等都是高维数据组织的语法结构。

数据包括文件存储程序使用两个状态。存储不同维度的数据需要适合维度特点的文件存储格式,处理不同维度数据的程序需要使用相适应的数据类型或结构。因此,对于数据处理,需要考虑存储格式以及表示和读写等两个问题。

一二维数据的存储格式

一维数据是简单的数据组织类型,有多种存储格式,常用特殊字符分隔,分隔方式如下:

  • 用一个或多个空格分隔。
  • 用逗号分隔(是英文逗号,不是中文逗号)
  • 用其他符号或符号组合分隔,建议采用不出现在数据中的特殊符号
中国 美国 日本 德国 法国 英国 意大利
======================================================================================
中国, 美国, 日本, 德国, 法国, 英国, 意大利
======================================================================================
中国; 美国; 日本; 德国; 法国; 英国; 意大利

二维数据由多条一维数据构成,可以看成是一维数据的组合形式。

国际通用的一二维数据储存格式:CSV格式

逗号分隔数据的存储格式叫做CSV格式(Comma-Separaed Values,, 逗号分隔值),有如下格式:

  • 纯文本格式,通过单一编码表示字符
  • 以行为单位,开头不留空行,行之间没有空行
  • 每行表示一个一维数据,多行表示二维数据
  • 以逗号(英文,半角)分隔每行数据,行数据为空也要保留逗号
  • 对于表格数据,可以包含或不包含列名,包含时列名防治在文件第一行

CSV格式存储的文件一般采用.csv为扩展名,可以通过Windows平台上的记事本或微软Office Excel工具打开,也可以在其他操作平台上用文本编译工具打开。

Python的csv标准库

Python提供了一个读写csv的标准库,可以通过import csv使用。csv库包含操作CSV格式最基本的功能,csv.reader()hecsv.writer()。

一二维数据对的表示和读写

一维数据写入CSV文件

fo = open("D:\\test01.csv", "w")
ls = ['北京','101.5','120.7','121.4']
fo.write(",".join(ls)+ "\n")
fo.close()

可以通过循环结构将一维数据写入文件中,形成二维数据

for row in ls:
    <输出文件>.write(",".join(row) +"\n")
===================================================================================
fo = open("D:\\test01.csv", "w")
ls = [
      ['城市','环比','同比','定基'],
      ['北京','101.5','120.7','121.4'],
      ['上海','101.2','127.3','127.8'],
      ['广州','101.3','119.4','120.0']
]
for row in ls:
    fo.write(",".join(row)+ "\n")
fo.close()

从CSV文件读取数据

fo = open("D:\\test01.csv","r")
ls = []
for  line in fo:
    line = line.replace("\n","")
    ls = line.split(",")
    lns = ""
    for s in ls:
        lns += "{}\t".format(s)
    print(lns)
fo.close()
==========================================================================
城市	环比	同比	定基	
北京	101.5	120.7	121.4	
上海	101.2	127.3	127.8	
广州	101.3	119.4	120.0