数据的CSV文件存取
本文的主要内容是基于中国大学mooc(慕课)中的“Python数据分析与可视化”课程进行整理和总结。
CSV,Comma-Separated Value,逗号分隔符,CSV是一种常见的文件格式,用于存储批量数据,常用于存储一维和二维数据。
如下表所示,存储称为CSV文件后变成用逗号分隔的数据文件。


Numpy中有两个函数可以用来将文件写入CSV格式,并从CSV文件中读取数据。
将数据写入CSV文件
np.savetest(frame,array,fmt=’%.18e’,delimiter=None)
frame:文件,字符串或产生器,可以是**.gz或者.bz2**的压缩文件;
array:存入文件的数组;
fmt:写入文件的格式,例如:%d %.2f %.18e,这是用户主要修改的参数;
delimiter:分割字符串,默认是空格;
a = np.arange(100).reshape(5,20)
np.savetxt('a.csv',a,fmt='%d',delimiter=',')
在与编写代码相同路径下可以找到该csv文件:

使用一位小数点的浮点数来存储数据生成CSV文件得到结果如下:
a = np.arange(100).reshape(5,20)
np.savetxt('b.csv',a,fmt='%.1f')

从结果可以看出,delimiter默认为None时,未对数据进行分隔,且每一行的数据均存在同一表格中。
将数据文件读入Numpy
还可以将CSV文件读入到Numpy数组类型中。
np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False)
frame:指定读入的文件来源,可以是文件,字符串或产生器,可以是**.gz或者.bz2**的压缩文件;
dtype:将CSV文件中的每一个元素由字符串变成一个特定的格式,使用dtype变量指定,数据类型可选;
delimiter:分隔字符串,默认是任何空格,CSV文件需要使用“,”作为分割字符串;
unpack:如果为True,读入属性将分别写入不同变量;
c = np.loadtxt('a.csv',delimiter=',')
c
array([[ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,
13., 14., 15., 16., 17., 18., 19.],
[20., 21., 22., 23., 24., 25., 26., 27., 28., 29., 30., 31., 32.,
33., 34., 35., 36., 37., 38., 39.],
[40., 41., 42., 43., 44., 45., 46., 47., 48., 49., 50., 51., 52.,
53., 54., 55., 56., 57., 58., 59.],
[60., 61., 62., 63., 64., 65., 66., 67., 68., 69., 70., 71., 72.,
73., 74., 75., 76., 77., 78., 79.],
[80., 81., 82., 83., 84., 85., 86., 87., 88., 89., 90., 91., 92.,
93., 94., 95., 96., 97., 98., 99.]])
d = np.loadtxt('a.csv',dtype=np.int,delimiter=',',unpack=True)
d
array([[ 0, 20, 40, 60, 80],
[ 1, 21, 41, 61, 81],
[ 2, 22, 42, 62, 82],
[ 3, 23, 43, 63, 83],
[ 4, 24, 44, 64, 84],
[ 5, 25, 45, 65, 85],
[ 6, 26, 46, 66, 86],
[ 7, 27, 47, 67, 87],
[ 8, 28, 48, 68, 88],
[ 9, 29, 49, 69, 89],
[10, 30, 50, 70, 90],
[11, 31, 51, 71, 91],
[12, 32, 52, 72, 92],
[13, 33, 53, 73, 93],
[14, 34, 54, 74, 94],
[15, 35, 55, 75, 95],
[16, 36, 56, 76, 96],
[17, 37, 57, 77, 97],
[18, 38, 58, 78, 98],
[19, 39, 59, 79, 99]])
CSV文件的局限性
CSV文件只能有效存储一维或者二维数组,np.savetxt()和np.loadtxt()只能有效存取一维和二维数组;
758



被折叠的 条评论
为什么被折叠?



