我习惯于R提供快速功能来逐列读取CSV文件,任何人都可以提出一种快速高效的方式来读取python中的大数据(例如CSV)文件吗?例如,CSV文件的i th 列。
我有以下内容,但需要时间:
import os,csv, numpy, scipy
from numpy import *
f= open('some.csv', 'rb')
reader = csv.reader(f, delimiter=',')
header = reader.next()
zipped = zip(*reader)
print( zipped[0] ) # is the first column
有没有更好的方法来读取python中的数据(来自大文件)(至少在内存方面与R一样快)?
答案 0 :(得分:5)
您还可以使用pandas.read_csv
及其use_cols
参数。见here
import pandas as pd
data = pd.read_csv('some.csv', use_cols = ['col_1', 'col_2', 'col_4'])
...
答案 1 :(得分:2)
import csv
with open('some.csv') as fin:
reader = csv.reader(fin)
first_col = [row[0] for row in reader]
您正在使用zip
执行的操作是将整个文件加载到内存中,然后将其转置以获取col。如果您只想要列值,只需在列表中包含该值即可。
如果您想要多列,那么您可以这样做:
from operator import itemgetter
get_cols = itemgetter(1, 3, 5)
cols = map(get_cols, reader)