One - One Code All

Blog Content

使用numpy读取CSV文件数据loadtext

Python   2013-09-16 22:09:59

在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()函数相对应的函数,上面的函数调用中,我们规定了用以保存数组的文件的名称、数组、可选格式、间隔符和一个可选的标题;



上一篇:flask部署一个静态网页app.send_static_file
下一篇:python求两个时间的时间差

The minute you think of giving up, think of the reason why you held on so long.