在NumPy中,使用loadtxt函数可以方便地读取CSV文件,自动切分字段,并将数据载入NumPy数组。
loadtxt的功能是读入数据文件,这里的数据文件要求每一行数据的格式相同。这个函数有几个常用的参数,这里给出了参数的意义。
fname:读取文件的文件名。例如C:/Dataset/iris.txt。
delimiter:数据之间的分隔符。如使用逗号”,”。
dtype:数据类型。如float,str等。
usecols:选取数据的列。
这里主要说一下usecols的用法。如果iris.txt中的前4列,则usecols=(0,1,2,3)。如果取第5列这一列,则usecols=(4,)
下面,我们以载入苹果公司的历史股价数据为例展开叙述。股价数据存储在CSV文件中,第一列为股票代码以标识股票(苹果公司股票代码为AAPL),第二列为dd-mm-yyyy格式的日期,第三列为空,随后各列依次是开盘价、最高价、最低价和收盘价,最后一列为当日的成交量。如上图,下面为一组数据:
AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800
假如我们想获取收盘价和成交量,我们可以将收盘价和成交量分别载入两个数组,代码如下:
c,v = np.loadtxt('data,csv',delimiter=',',skiprows=1, usecols=(6,7),unpack=True)
注:这里’data.csv’是保存数据的位置;delimiter=’,’表示用逗号做分隔符;usecols=(6,7)表示usecols的参数是一个元组,以获取第7字段和第8字段的数据;unpack参数设置为True,意思是分拆存储不同列的数据;
假如说csv文件的第一行是表头(文字),那么使用以上语句读取会报错。
ValueError: could not convert string to float: 收盘价
这时我们一般在loadtxt函数中加入skiprows=1跳过第一行就好了;
numpy以CSV保存数据
np.savetxt('np.csv',a,fmt='%.2f',delimiter=',',header="#1,#2,#3,#4")
numpy的savetxt()函数是与loadtxt()函数相对应的函数,上面的函数调用中,我们规定了用以保存数组的文件的名称、数组、可选格式、间隔符和一个可选的标题;