Lectura de un enorme archivo .csv

| | |

Actualmente estoy tratando de leer datos de archivos .csv en Python 2.7 con hasta 1 millón de filas y 200 columnas (los archivos varían de 100 mb a 1,6 gb). Puedo hacer esto (muy lentamente) para los archivos con debajo de 300,000 filas, pero una vez que supero eso, obtengo errores de memoria. Mi código se ve así:

def getdata(filename, criteria): data=[] for criterio in criteria: data. append(getstuff(filename, criteron)) return data def getstuff(filename, criterio): import csv data=[] with open(filename, "rb") as csvfile: datareader=csv.reader(csvfile) for row in datareader: if fila[3]=="encabezado de columna": datos.agregar(fila) elif len(datos)<2 y fila[3]!=criterio: pasar elif fila[3]==criterio: datos.agregar(fila ) else: return data 

La razón de la cláusula else en la función getstuff es que todos los elementos que se ajusten al criterio se enumerarán juntos en el archivo csv, así que dejo el bucle cuando Los paso para ahorrar tiempo.

Mis preguntas son:

  1. ¿Cómo puedo llegar a ¿Esto funciona con los archivos más grandes?

  2. ¿Hay alguna manera de hacerlo más rápido?

Mi computadora tiene 8 GB de RAM, con Windows 7 de 64 bits y el procesador es de 3,40 GHz (no estoy seguro de qué información necesita).

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