Atualmente, estou tentando ler dados de arquivos .csv no Python 2.7 com até 1 milhão de linhas e 200 colunas (os arquivos variam de 100 MB a 1,6 GB). Posso fazer isso (muito lentamente) para os arquivos com menos de 300.000 linhas, mas uma vez que vou acima disso, recebo erros de memória. Meu código se parece com isso:
def getdata(filename,critérios): data=[] para critério em critérios: dados. append(getstuff(filename, criteron)) return data def getstuff(filename, attribute): import csv data=[] with open(filename, "rb") como csvfile: datareader=csv.reader(csvfile) for row in datareader: if row[3]=="cabeçalho da coluna": data.append(row) elif len(data)<2 and row[3]!=critério: passe elif row[3]==critério: data.append(row ) else: return data
O motivo da cláusula else na função getstuff é que todos os elementos que se encaixam no critério serão listados juntos no arquivo csv, então deixo o loop quando Eu passo por eles para economizar tempo.
Minhas perguntas são:
Como posso conseguir isso funcione com os arquivos maiores?
Existe alguma maneira de torná-lo mais rápido?
Meu computador tem 8 GB de RAM, executando o Windows 7 de 64 bits e o processador é de 3,40 GHz (não tenho certeza de quais informações você precisa).