La solución más rápida al error, «Error UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xe1 in position…» es emplear Sublime Text .
Abrimos nuestro archivo con sublime text y en la opción guardar con encoding guardarlo como UTF 8
Existen otras opciones, veamoslas
Codificar al leer el archivo
Hacer el encoding a UTF-8 al hacer el csv_read()
, pasando en el parámetro encoding()
la codificación que esperamos.
Importar chardet y codificar en la lectura del archivo.
import chardet with open('data/atp-tour/data.csv', 'rb') as f: result = chardet.detect(f.read()) result['encoding'] Output: 'Windows-1252'
Si lanza un warning de LOW MEMORY se deberá principalmente a los tipos de adivinación por columna, están empleando mucha memoria.
Esto sucede en esencia, porque Pandas solo puede determinar qué tipo de dato tiene cada columna, solamente una vez que lee todo el archivo.
Puede ayudar especificar el tipo de archivo, indicándolo en el parámetro dtype , con la sintaxis.
dtype = {'user_id': int}
Esto es solo recomendable, si sabemos que no encontraremos otro tipo de dato en esa columna, si no cumplimos este precepto, complicaremos la situación , porque se bloqueará la carga.
Hay un poco mas sobre esto en este link
Espero modestamente que este artículo, sirva de ayuda a alguien.
Gracias
Puedo absorber tus pecados, pero no vivir tu vida.
Y