目录
数据的几种类型
一维数据
由对等关系的有序或无序数据构成,采用线性方式组织
-对应列表、数组和集合等概念
二维数据
由多个一维数据构成,是一维数据的组合形式
-表格是典型的二维数据
-其中,表头可以作为二维数据的一部分,也可以作为二维数据之外的部分
多维数据
由一维或二维数据在新维度上的扩展形成
如中国大学排行榜形成的表格(二维数据)在时间维度上的扩展
高维数据
仅利用最基本的二元关系展示数据间的复杂结构
如:键值对
{
"firstName":"Tian",
"lastName":"Sone",
"address":{
"streetAddr":"中关村南大街5号",
"city":"北京市",
"zipcode":"100081"
},
"professional":["Computer Netowrking","Security"]
}
数据的操作周期
存储<->表示<->操作
关系图:
一维数据
一维数据的表示
如果数据见有序:使用列表类型
ls=[3.1398,3.1349,3.1376]
-列表类型可以表达一维有序数据
-for循环可以遍历数据,进而对每个数据进行处理
如果数据间无序:使用集合类型
st={3.1398,3.1349,1.1376}
-集合类型可以表达一维数据
-for循环可以遍历数据,进而对每个数据进行处理
一维数据的存储
存储方式一:空格分隔
中国 美国 日本 德国 法国 英国 意大利
-使用一个或多个空格分隔进行存储,不换行
-缺点:数据中不能存在空格
存储方式二:逗号分隔
中国,美国,日本,德国,法国,英国,意大利
-使用英文半角逗号分隔进行存储,不换行
-缺点:数据中不能存在英文逗号
存储方式三:其他方式(通常使用)
中国$美国$日本$德国$法国$英国$意大利
-使用其他符号或符号组合分隔,建议采用特殊符号
-缺点:需要根据数据特点定义,通用性较差
一维数据的处理
存储<->表示
-将存储的数据读入程序
-将程序表示的数据写入文件
一维数据的读入处理
从空格分隔的文件中读入数据
中国 美国 日本 德国 法国 英国 意大利
txt=open(fname).read()
ls=txt.split()
f.close()
从特殊符号分隔的文件中读入数据
中国$美国$日本$德国$法国$英国$意大利
txt=open(fname).read()
ls=txt.split("$")
f.close()
ps:split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表
一维数据的写入处理
采用空格分隔方式将数据写入文件ls=['中国','美国','日本']
ls=['中国','美国','日本']
f=open(fname,'w') #w为一种模式
f.write(' '.join(ls)) #在增加元素中间增加空格
f.close()
采用特殊分隔方式将数据写入文件
ls=['中国','美国','日本']
f=open(fname,'w')
f.write('$'.join(ls))
f.close()
二维数据
二维数据的表示
[[3.1398,3.1349,3.1376],[3.1413,3.1404,3.1401]]
即:列表类型中的每一个元素又是一个列表
使用列表类型
[[3.1398,3.1349,3.1376],[3.1413,3.1404,3.1401]]
-使用两层for循环遍历每个元素
-外层列表中每个元素可以对应一行,也可以对应一列
CSV格式
CSV:Comma-Separated Valuse
-国际通用的一二维数据存储格式,一般.CSV扩展名
-每行一个一维数据,采用逗号分隔,无空行
-Excel和一般编程软件都可以读入或另存为csv文件
如图:(表格转换为csv文件)
二维数据的存储
-如果某个元素缺失,逗号仍要保留
-二维数据的表头可以作为数据存储,也可以另行存储
-逗号为英文半角逗号,逗号与数据之间无额外空格
-按行存或者按列存都可以,具体有程序决定
-一般索引习惯:ls[row][coumn],先行后列
-根据一般习惯,外层列表每个元素是一行,按行存
二维数据的处理
从CSV格式的文件中读入数据
fo=open(fname)
ls=[]
for lin in fo:
line=line.replace("\n"," ")
ls.append(line.split(",")) #将每行元素按照split的形式用逗号分开,形成列表,加到数据后
fo.close()
将数据写入CSV格式的文件
s=[[],[],[]] #二位列表
f=open(fname,"w")
for item in ls:
f.write(','.join(item)+'\n')
f.close()
二维数据的逐一处理
采用二层循环
ls=[[1,2],[3,4],[5,6]] #二位列表
for row in ls:
for column in row:
print(column)