今天在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)
好了,這樣我們就導入成功了