CSVKit – trabajando con archivos CSV en la terminal



CSVKit – trabajando con archivos CSV en la terminal

1 0


csv

Presentación sobre CSVKit para DataFest

On Github gabelula / csv

CSVKit

trabajando con archivos CSV en la terminal

Por Gabriela Rodríguez / @gaba

Knight-Mozilla Open News Fellow at La Nacion, Argentina

Presentación en http://gabelula.github.io/csv/

programadora de Open News en La Nacion este es un taller con manos en la masa - asacar compus

Formato CSV

comma separated values

  • formato abierto
  • columnas se separan por comas, filas por saltos de linea

CSVKit

es un conjunto herramientas para trabajar con archivos CSV, manejarlos, limpiarlos, unirlos, convertirlos a otros formatos, etc

Instalación

  • Linux o Mac (para windows instalar Cygwin)
  • pip - manejador de paquetes en python
  • en ubuntu - sudo apt-get install python-dev python-pip python-setuptools build-essential

pip install csvkit

Tus Datos

ejemplo para jugar en http://gabelula.github.io/cvs/datos/

¡Adios Excel!

    $ in2csv EleccionesHistoricasUY.xlsx > data.csv

Dar una mirada a los datos

    $ csvlook acceso-informacion-publica-2013.csv
    ...
    $ csvlook -e iso-8859-13 Fallecidos_2013.csv | head
    ...

Mostrar sólo algunas columnas

    $ csvcut -n acceso-informacion-publica-2013.csv
      1: id_solicitante
      2: expediente
      3: dependencia
      4: fecha
      5: tema
      6: categoria_tema
      7: dependencia_ministerio
      8: ministerio
      9: vencimiento_1
     10: vencimiento_2
     11: prorroga
     12: estado
     13: termino
     14: fecha_respuesta

Mostrar sólo algunas columnas

    $ csvcut -c 2,5,12 acceso-informacion-publica-2013.csv
        expediente,tema,estado
        240768,DATOS VARIOS CON RESPECTO A LICITACIONES DE OBRAS DE ESPACIOS VERDES ,Finalizado fuera de término
        240791,DATOS VARIOS CON RESPECTO AL FUNCIONAMIENTO DE LAS ESTACIONES SAN JOSE DE FLORES Y NAZCA,Finalizado en término
        ...

Varias acciones con pipe (|)

    $ csvcut -c 2,5,12 acceso-informacion-publica-2013.csv | csvlook | head

Mirar estadisticas del CSV

    $ csvstat acceso-informacion-publica-2013.csv
    Unique values: 1143
    5 most frequent values:

    245,7442737,MGEYA,2013-12-27,REITERA:   4

    290,628690,MGEYA,2013-02-22,DATOS:      2

    290,628690,MGEYA,2013-02-22,INFORMACION:        2

    84,355174,MGEYA,2013-01-28,"ACTUACIONES:        1

    1,240805,MGEYA,2013-01-18,FUNCIONES:    1
    Max length: 44

    Row count: 1148

Buscar en una columna

    $ csvgrep -c estado -m "Pendiente"
    datos/acceso-informacion-publica-2013.csv | head

Buscar datos mediante expresiones regulares

    $ csvgrep -c expediente -r "24\d{4}"
    datos/acceso-informacion-publica-2013.csv | head

Unir dos archivos

    $ csvjoin -c Tipo_vehiculo,Codigo
    multas_transito_2006_2010/multas2008.csv
    multas_transito_2006_2010/tipos_de_vehiculo.csv  --left

Convertir a JSON

    $ csvjson --key Codigo --indent 4
    multas_transito_2006_2010/tipos_de_vehiculo.csv

Agregar filas de un archivo a otro

    $ csvstack multas2008.csv tipos_de_vehiculo.csv

Muestra errores comunes de sintaxis

    $ csvclean acceso-informacion-publica-2013.csv
    271 errors logged to acceso-informacion-publica-2013_err.csv

Correr consultas SQL y exportar datos a SQL para importar en db

    $ csvsql -i postgresql multas_transito_2006_2010/tipos_de_vehiculo.csv
    CREATE TABLE tipos_de_vehiculo (
                "Codigo" INTEGER NOT NULL,
                "Nombre" VARCHAR(29) NOT NULL
    );

Otros comandos de Unix

    $ less, head, tail, cat

¡Gracias!

por Gabriela Rodríguez / @gaba

Agradecimientos: Christopher Groskopf por escribir CSVKit.

Presentación en http://gabelula.github.io/csv/

CSVKit en https://csvkit.readthedocs.org/