如何在NumPy中将CSV数据读入记录数组?

我想知道是否有直接的方法将CSV文件的内容导入记录数组,就像R的read.table()read.delim()read.csv()系列将数据导入R的方式同样数据框架? html

或者是使用csv.reader()而后应用相似numpy.core.records.fromrecords()的最佳方法? 数组


#1楼

我会推荐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.csvcode

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')])

这样作的好处是能够轻松导入具备多种数据类型(包括字符串)的文件。


#2楼

我定时了

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方法会有相似的解释器开销。


#3楼

你能够使用Numpy的genfromtxt()方法,经过将delimiter kwarg设置为逗号。

from numpy import genfromtxt
my_data = genfromtxt('my_file.csv', delimiter=',')

有关该功能的更多信息,请参见其相应的文档


#4楼

您能够使用此代码将CSV文件数据发送到数组中:

import numpy as np
csv = np.genfromtxt('test.csv', delimiter=",")
print(csv)

#5楼

我试过这个:

import pandas as p
import numpy as n

closingValue = p.read_csv("<FILENAME>", usecols=[4], dtype=float)
print(closingValue)
相关文章
相关标签/搜索