2013-05-31 1 views
2

Я привык к R, который предлагает быстрые функции для чтения столбцов CSV-файлов по столбцу, может ли кто-нибудь предложить быстро и эффективный способ чтения больших файлов данных (например, CSV) в python? i th столбец файла CSV, например.Каков наилучший способ прочитать i-й столбец csv-файла с помощью Python?

У меня есть следующий, но это требует времени:

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 в терминах памяти)?

ответ

2
import csv 

with open('some.csv') as fin: 
    reader = csv.reader(fin) 
    first_col = [row[0] for row in reader] 

Что вы делаете с помощью zip загружается весь файл в память, а затем перенося его, чтобы получить седловины. Если вам нужны только значения столбца, просто включите их в список для начала.

Если вы хотите несколько столбцов, то вы можете сделать:

from operator import itemgetter 
get_cols = itemgetter(1, 3, 5) 
cols = map(get_cols, reader) 
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']) 
...