今天在kaggle上看到一个很好的数据集,想亲自进行处理,但是在将.csv格式文件转化为数据矩阵时就出现了问题,我在谷歌上查了下,发现了个很好用的东西和大家分享。那就是Numpy包里的genfromtxt。它可以很轻松的实现上述功能。
此函数的完整形式为:
numpy.genfromtxt(fname, dtype=<type 'float'>, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None)[source]¶
今天先介绍几个一定会用到的属性:
1.fname,顾名思义,就是文件名,不详述
2.delimiter:str,int,or sequence,optional.他是分割值,即表示你的数组用什么来分割。
3.usecols,即选择读哪几行,在讲文件读入代码的时候,我们通常是将属性集读为一个数组,此时它就派上用场了
4.dtype,表明改行类型
如果你还有必要知道它的其他的参数,你可以参考它的官方文档
为了让描述更加形象化,我们引入一个数据集,下载,或者直接运行下列代码即可
import urllib2 url = 'http://aima.cs.berkeley.edu/data/iris.csv' u = urllib2.urlopen(url) localFile = open('iris.csv'', 'w') localFile.write(u.read()) localFile.close()
运行这段代码,代码非常简单,我是直接从网上拷贝的,这里不做详述。你当前文件夹下就会生成一个iris.csv文件
那现在我们如何讲该数据集导入程序呢?就就要用到我们介绍的这个库了
from numpy import genfromtxt,zeros data=genfromtxt('iris.csv',delimiter=',',usecols=(0,1,2,3)) target=genfromtxt('iris.csv',delimiter=',',usecols=(4),dtype=str)
好了,这样我们就导入成功了