[Python-es] [Consulta] Leer csv

Darío darioslc en protonmail.com
Dom Jul 19 16:22:56 EDT 2020


> Ahora me quedó más claro, que tengo que usar pandas, en el mail anterior no lo había entendido. Gracias

Sí perdón la desprolijidad! mejor aún es la documentación del paquete, la oficial está en inglés y son miles de páginas, esta página me ayudó mucho con pandas y otras librerías y python per sé:
https://riptutorial.com/es/topic?q=pandas&submit=Search

> Enviado desde mi smartphone Samsung Galaxy.
>
> -------- Mensaje original --------
> De: Darío vía Python-es <python-es en python.org>
> Fecha: 19/7/20 17:10 (GMT-03:00)
> A: La lista de python en castellano <python-es en python.org>
> CC: Darío <darioslc en protonmail.com>
> Asunto: Re: [Python-es] [Consulta] Leer csv
>
> Usando el archivo original éstas son las salidas:
>>>> import pandas as pd
>
>>>> leer = pd.read_csv('/home/darioslc/Descargas/demo.csv')
>
>>>> leer
> T02 Region/Contry/Area ... Value
> 0 1 ... 6541.9070
> 1 1 ... 3296.4853
> 2 1 ... 3245.4217
> 3 1 ... 101.5734
> 4 1 ... 28.1425
> 5 1 ... 10.2516
>
> [6 rows x 5 columns]
>
>>>> leer.columns # muestra todas las columnas
> Index(['T02 Region/Contry/Area', ' Population density and surface area',
> ' Year', ' Series', ' Value'],
> dtype='object')
>
>>>> leer.columns[0]
> 'T02 Region/Contry/Area'
>
>>>> leer[leer.columns[2]]
> 0 2005
> 1 2005
> 2 2005
> 3 2005
> 4 2005
> 5 2005
> Name: Year, dtype: int64
>
>>>> leer[:] # muestra todo
> T02 Region/Contry/Area ... Value
> 0 1 ... 6541.9070
> 1 1 ... 3296.4853
> 2 1 ... 3245.4217
> 3 1 ... 101.5734
> 4 1 ... 28.1425
> 5 1 ... 10.2516
>
> [6 rows x 5 columns]
>
>>>> leer[0:3] # muestra de la columna 0 a la 3
> T02 Region/Contry/Area ... Value
> 0 1 ... 6541.9070
> 1 1 ... 3296.4853
> 2 1 ... 3245.4217
>
> [3 rows x 5 columns]
>
>>>> # renombro la primer columna
>
>>>> leer2 = leer.rename(columns = {leer.columns[0]:'regione'})
>
>>>> leer2
> regione ... Value
> 0 1 ... 6541.9070
> 1 1 ... 3296.4853
> 2 1 ... 3245.4217
> 3 1 ... 101.5734
> 4 1 ... 28.1425
> 5 1 ... 10.2516
>
> [6 rows x 5 columns]
>
> No muestra todos los datos porque los nombres de columna son excesivamente largos, se puede renombrar con el comando anterior separando por comas lo renombrado (primero va el nombre viejo y después de los : el nuevo)
>
> Luego de abierto lo que podés hacer con pandas es realmente todo!!! desde calcular valores medios, máximos, mínimos, interpolar, graficar, etc........
>
> -
>
> Sent with ProtonMail Secure Email.
>
> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> On Sunday, 19 de July de 2020 16:49, Lemarchand Barker <lemarchand8679 en gmail.com> wrote:
>
>> Estoy probando copiar un poco de la data del csv, lo pasé a un editor
>> y el código funcionó perfecto. No se si el archivo original tendrá
>> algún inconveniente, mi código o funciona porque copié una parte de la
>> info y no todo el resto.
>> Adjunto el archivito que hice, el código no lo toqué, lo único que
>> hice fue comentar la línea del with para colocar el nombre nuevo, y
>> quedó así:
>>
>> with open('demo.csv', 'rt') as File:
>>
>> Y la salida es la siguiente:
>> ['T02 Region/Contry/Area', ' Population density and surface area', '
>> Year', ' Series', ' Value']
>> ['1', ' Total all countries or areas', ' 2005', ' Population mid-year
>> estimates (millions)', ' 6541.9070']
>> ['1', ' Total all countries or areas', ' 2005', ' Population mid-year
>> estimates for males (millions)', ' 3296.4853']
>> ['1', ' Total all countries or areas', ' 2005', ' Population mid-year
>> estimates for females (millions)', ' 3245.4217']
>> ['1', ' Total all countries or areas', ' 2005', ' Sex ratio (males per
>> 100 females)', ' 101.5734']
>> ['1', ' Total all countries or areas', ' 2005', ' Population aged 0 to
>> 14 years old (porcentage)', ' 28.1425']
>> ['1', ' Total all countries or areas', ' 2005', ' Population aged 60+
>> years old (porcentage)', ' 10.2516']
>> []
>> Justo mando esto cuando Darío me respondió. Saludos
>>
>> El dom., 19 jul. 2020 a las 16:22, Lemarchand Barker
>> (lemarchand8679 en gmail.com) escribió:
>>
>> > 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.
>> > 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
>> > 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 | 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
>>
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20200719/a2d9bae6/attachment.html>


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