[Python-es] [Consulta] Leer csv

Darío darioslc en protonmail.com
Dom Jul 19 15:46:01 EDT 2020


> Buenas, estoy leyendo un csv, al principio no me leía, hasta que logré que lo haga, pero el problema viene cuando lee. Me muestra el resultado y al final me da un mensaje de error.

Hola, no te conviene leerlo usando pandas, es bastante más simple, si archivo es el nombre del csv, o sea archivo.csv:
import pandas as pd

leer = pd.read_csv('ruta/archivo.csv')
# si querés ver los nombres de columna:
leer.columns
# si querés ver los últimos diez valores
leer.tail(10)
# si querés ver los primeros 23 valores
leer.head(23)
# una columna específica
leer['nombre_columna']

también hay muchas más opciones si el csv tiene un índice específico como ser por fechas, o también indexar directamente por la columna específica que quieras, basta agregar index_col = # en pd.read_csv

Espero te sirva, pandas para este tipo de archivos es ideal.

Saludos!

> El código es el siguiente:
>
> import csv
>
> # with open('SYB62_1_201907_Population_Surface_Area_and_Density.csv', newline='') as File:
> with open('population.csv', 'rt') as File:
> reader = csv.reader(File)
> for row in reader:
> print(row)
>
> La salida es la siguiente:
>
> ['188', 'Costa Rica', '2005', 'Population mid-year estimates for females (millions)', '2.1369', '', 'United Nations Population Division, New York, World Population Prospects: The 2019 Revision, last accessed June 2019.']
> ['188', 'Costa Rica', '2005', 'Sex ratio (males per 100 females)', '100.5460', '', 'United Nations Population Division, New York, World Population Prospects: The 2019 Revision; supplemented by data from the United Nations Statistics Division, New York, Demographic Yearbook 2015 and Secretariat for the Pacific Community (SPC) for small countries or areas, last accessed June 2019.']
> Traceback (most recent call last):
> File "/home/raiden/Programacion/curso/ejercicios/testcsv.py", line 6, in <module>
> for row in reader:
> File "/usr/lib/python3.8/codecs.py", line 322, in decode
> (result, consumed) = self._buffer_decode(data, self.errors, final)
> UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf4 in position 6529: invalid continuation byte
>
> Solo copié un fragmento de toda la salida; lo que se ve antes del Traceback; porque es bastante extenso el texto. Otra cosa que hice fue cambiarle el nombre, porque era muy extenso el original.
>
> Al abrir el archivo con la planilla de cálculo la línea 6529, es la siguiente:
>
> 760	Syrian Arab Republic	2010	Population aged 0 to 14 years old (percentage)	37.3903
>
> El contenido del csv se puede ver en este link (formato pdf): [pdf](http://data.un.org/_Docs/SYB/PDFs/SYB62_1_201907_Population,%20Surface%20Area%20and%20Density.pdf)
> El original se encuentra acá: http://data.un.org/
> El csv es desde la izquierda, la primer columna, donde dice: - Population, surface area and density
> - [PDF](http://data.un.org/_Docs/SYB/PDFs/SYB62_1_201907_Population, Surface Area and Density.pdf) | [CSV](http://data.un.org/_Docs/SYB/CSV/SYB62_1_201907_Population, Surface Area and Density.csv) Updated: 23-Jul-2019
>
> Perdón la ignorancia pero no se que puede ser lo que me esté generando esa salida de Unicode.
> Saludos, gracias
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20200719/8951c2fb/attachment.html>


Más información sobre la lista de distribución Python-es