我想知道是否有直接的方法将CSV文件的内容导入记录数组,就像R的read.table()
, read.delim()
和read.csv()
系列将数据导入R的方式同样数据框架? html
或者是使用csv.reader()而后应用相似numpy.core.records.fromrecords()
的最佳方法? 数组
我会推荐pandas
库中的read_csv
函数: 数据结构
import pandas as pd df=pd.read_csv('myfile.csv', sep=',',header=None) df.values array([[ 1. , 2. , 3. ], [ 4. , 5.5, 6. ]])
这给了一个pandas DataFrame - 容许许多有用的数据操做函数,这些函数不能直接用于numpy记录数组 。 框架
DataFrame是一个二维标记数据结构,具备可能不一样类型的列。 你能够把它想象成电子表格或SQL表...... 函数
我也推荐genfromtxt
。 可是,因为问题要求记录数组 ,而不是普通数组,所以须要将genfromtxt
dtype=None
参数添加到genfromtxt
调用: spa
给定一个输入文件myfile.csv
: code
1.0, 2, 3 4, 5.5, 6 import numpy as np np.genfromtxt('myfile.csv',delimiter=',')
给出一个数组: htm
array([[ 1. , 2. , 3. ], [ 4. , 5.5, 6. ]])
和 ip
np.genfromtxt('myfile.csv',delimiter=',',dtype=None)
给出一个记录数组: ci
array([(1.0, 2.0, 3), (4.0, 5.5, 6)], dtype=[('f0', '<f8'), ('f1', '<f8'), ('f2', '<i4')])
这样作的好处是能够轻松导入具备多种数据类型(包括字符串)的文件。
我定时了
from numpy import genfromtxt genfromtxt(fname = dest_file, dtype = (<whatever options>))
与
import csv import numpy as np with open(dest_file,'r') as dest_f: data_iter = csv.reader(dest_f, delimiter = delimiter, quotechar = '"') data = [data for data in data_iter] data_array = np.asarray(data, dtype = <whatever options>)
在460万行,大约70列,发现NumPy路径须要2分16秒,而csv-list理解方法须要13秒。
我建议使用csv-list理解方法,由于它极可能依赖于预编译的库而不是NumPy那样的解释器。 我怀疑pandas方法会有相似的解释器开销。
你能够使用Numpy的genfromtxt()
方法,经过将delimiter
kwarg设置为逗号。
from numpy import genfromtxt my_data = genfromtxt('my_file.csv', delimiter=',')
有关该功能的更多信息,请参见其相应的文档 。
您能够使用此代码将CSV文件数据发送到数组中:
import numpy as np csv = np.genfromtxt('test.csv', delimiter=",") print(csv)
我试过这个:
import pandas as p import numpy as n closingValue = p.read_csv("<FILENAME>", usecols=[4], dtype=float) print(closingValue)