Lendo um arquivo .csv enorme

| | |

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:

  1. Como posso conseguir isso funcione com os arquivos maiores?

  2. 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).

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method