[Python-es] [Consulta] Leer csv

Darío darioslc en protonmail.com
Dom Jul 19 16:08:41 EDT 2020


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




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