Diferencia entre revisiones de «Usuario:Lmorillas/modulo programacion/python/csv»

De WikiEducator
Saltar a: navegación, buscar
(Página creada con '=== Ficheros CSV === La información de una hoja de cálculo se puede exportar/importar desde un fichero [http://es.wikipedia.org/wiki/CSV csv]. Python tiene soporte para tratar…')
 
 
(Una revisión intermedia por el mismo usuario no mostrado)
Línea 1: Línea 1:
=== Ficheros CSV ===
+
{{DISPLAYTITLE:Ficheros CSV}}
 +
 
 +
== Ficheros CSV ==
 
La información de una hoja de cálculo se puede exportar/importar desde un fichero [http://es.wikipedia.org/wiki/CSV csv]. Python tiene soporte para tratar ficheros csv.
 
La información de una hoja de cálculo se puede exportar/importar desde un fichero [http://es.wikipedia.org/wiki/CSV csv]. Python tiene soporte para tratar ficheros csv.
 
Un fichero csv es un fichero de texto.
 
Un fichero csv es un fichero de texto.
Línea 6: Línea 8:
 
<!-- http://www.bde.es/webbde/es/estadis/infoest/htmls/recomendaciones.html -->
 
<!-- http://www.bde.es/webbde/es/estadis/infoest/htmls/recomendaciones.html -->
  
==== Lectura ====
+
== Lectura ==
 
<source lang="python">
 
<source lang="python">
 
import csv
 
import csv
Línea 22: Línea 24:
 
</source>
 
</source>
  
==== Escritura====
+
== Escritura==
 
<source lang="python">
 
<source lang="python">
 
with open('codigo_ascii.txt', 'w') as fout:
 
with open('codigo_ascii.txt', 'w') as fout:
Línea 30: Línea 32:
 
         writer.writerow((chr(ascii_a+n), ascii_a + n))
 
         writer.writerow((chr(ascii_a+n), ascii_a + n))
 
</source>
 
</source>
==== Quoting ====
+
== Quoting ==
 
  writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)
 
  writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)
==== Dialectos ====
+
== Dialectos ==
 
  >>> csv.list_dialects()
 
  >>> csv.list_dialects()
 
  ['excel-tab', 'excel']
 
  ['excel-tab', 'excel']
Línea 38: Línea 40:
 
Se pueden crear dialectos:
 
Se pueden crear dialectos:
 
  csv.register_dialect(nombre, delimiter="|")
 
  csv.register_dialect(nombre, delimiter="|")
==== Usando nombres de campos ====
+
== Usando nombres de campos ==
 
<source lang="python">
 
<source lang="python">
 
with open('zaragoza_2010_10.csv') as fin:
 
with open('zaragoza_2010_10.csv') as fin:
Línea 45: Línea 47:
 
     reader = csv.DictReader(fin, delimiter=";")
 
     reader = csv.DictReader(fin, delimiter=";")
 
</source>
 
</source>
 +
 +
{{/ejercicio cvs euskadi}}

Última revisión de 22:13 2 dic 2011


Ficheros CSV

La información de una hoja de cálculo se puede exportar/importar desde un fichero csv. Python tiene soporte para tratar ficheros csv. Un fichero csv es un fichero de texto.

Lectura

import csv
with open('zaragoza_2010_10.csv') as fin:
    reader = csv.reader(fin, delimiter=";")
    for fila in reader:
        print fila
['Países', 'HOMBRES', 'MUJERES', 'TOTAL']
['Rumania', '16704', '14487', '31191']
['Ecuador', '5612', '5713', '11325']
['Marruecos', '5042', '3007', '8049']

Escritura

with open('codigo_ascii.txt', 'w') as fout:
    writer = csv.writer(fout)
    ascii_a = ord('a')
    for n in range(26):
        writer.writerow((chr(ascii_a+n), ascii_a + n))

Quoting

writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)

Dialectos

>>> csv.list_dialects()
['excel-tab', 'excel']

Se pueden crear dialectos:

csv.register_dialect(nombre, delimiter="|")

Usando nombres de campos

with open('zaragoza_2010_10.csv') as fin:
    # cuidado, toma la primera fila como títulos
    # usad parámetro fieldnames si no
    reader = csv.DictReader(fin, delimiter=";")



Ejercicio con fichero csv de opendata euskadi

Icon activity.jpg

Ejercicio con fichero csv de opendata euskadi

Usa los datos del fichero csv de http://opendata.euskadi.net/w79-contgen/es/contenidos/ds_general/sueldos_altos_cargos_2011/es_sueldos/altos_cargos_asesores.html

Crea un programa que:

  • genere un nuevo fichero csv con los datos de retribuciones anuales (2009, 2010 y 2011)
  • muestre la evolución de los sueldos en porcentajes entre los 3 años
  • haga una gráfica (sueldos_euskadi.png) con la evolución de los sueldos.





Icon present.gif
Tip:

Los ficheros tienen caracteres codificados y pueden dar problemas si no se codifican bien. Una buena práctica es trabajar con unicode, como muestra en este ejemplo.

# Siguiendo nuestro ejemplo:
import urllib2
 
url = 'http://opendata.euskadi.net/w79-contgen/es/contenidos/ds_general/sueldos_altos_cargos_2011/es_sueldos/contenidos/ds_general/sueldos_altos_cargos_2011/es_sueldos/adjuntos/sueldos_2011.csv'
 
req = urllib2.urlopen(url)
content = req.read()
 
# extraer el encoding de la cabecera
encoding=req.headers['content-type'].split('charset=')[-1]
 
# convertir a unidoce, usando el encoding apropiado
ucontent = unicode(content, encoding)