Lettura di un enorme file .csv

| | |

Sto attualmente cercando di leggere i dati dai file .csv in Python 2.7 con un massimo di 1 milione di righe e 200 colonne (i file vanno da 100 MB a 1,6 GB). Posso farlo (molto lentamente) per i file con meno di 300.000 righe, ma una volta che vado oltre ottengo errori di memoria. Il mio codice è simile a questo:

def getdata(filename, criteri): data=[] for criterion in criteri: data. append(getstuff(filename, criteron)) return data def getstuff(filename, criterion): import csv data=[] with open(filename, "rb") as csvfile: datareader=csv.reader(csvfile) for row in datareader: if row[3]=="column header": data.append(row) elif len(data)<2 and row[3]!=criterio: pass elif row[3]==criterio: data.append(row ) else: return data 

Il motivo della clausola else nella funzione getstuff è che tutti gli elementi che soddisfano il criterio verranno elencati insieme nel file csv, quindi lascio il ciclo quando Li passo oltre per risparmiare tempo.

Le mie domande sono:

  1. Come posso fare per ottenere questo per funzionare con i file più grandi?

  2. C'è un modo per renderlo più veloce?

Il mio computer ha 8 GB di RAM, con Windows 7 a 64 bit e il processore è a 3,40 GHz (non sono sicuro di quali informazioni siano necessarie).

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