[pyar] leer csv con pandas

Nats taku246 en gmail.com
Mie Nov 9 09:17:19 ART 2016


Buenas, tengo entendido que tenias problemas con las comillas, has probado
usando la funcion str() ?
saludos


>
> Message: 5
> Date: Tue, 8 Nov 2016 20:12:46 -0300
> From: Javier Marcon <javiermarcon en gmail.com>
> To: Python Argentina <pyar en python.org.ar>
> Subject: [pyar] leer csv con pandas
> Message-ID: <8eb7f113-d2a8-b5fb-35ba-27d9a92a19f4 en gmail.com>
> Content-Type: text/plain; charset=windows-1252
>
> Hola, tengo un log en formato csv que quiero graficar con pandas, pero
> el tema es que cuando lo leo no logro que me saque los caracteres que
> que encierran los datos. El csv está escrito asi:
>
> javier en javier-System-Product-Name:~$ head -5 /var/log/postgres_locks.log
> 'date', 'cpu', 'ram', 'wait', 'si', 'so', 'conexiones', 'locks',
> 'ratio', 'writeclean', 'buffers'
> '17-10-2016 21:10:01', '0.9', '16', '2000040', '0', '0', '22', '6916',
> '3301.0274389854664426', '0', '12953'
> '17-10-2016 21:20:01', '0.9', '16', '2000040', '0', '0', '22', '6916',
> '3301.0430301885955688', '0', '12953'
> '17-10-2016 21:30:02', '0.9', '16', '2000040', '0', '0', '22', '6916',
> '3301.0583613479540200', '0', '12954'
> '17-10-2016 21:40:01', '0.9', '16', '2000040', '0', '0', '22', '6916',
> '3301.0739223134353932', '0', '12954'
> javier en javier-System-Product-Name:~$
>
> Y en un ipython notebook pongo:
>
> import pandas as pd
> import numpy as np
> import matplotlib.pyplot as plt
> %matplotlib inline
> datos =pd.read_csv("/var/log/datos.log", sep=', ', quotechar="'")
> datos.head()
>
> y obtengo:
>
>
>         'date'  'cpu'   'ram'   'wait'  'si'    'so'    'conexiones'
> 'locks'
> 'ratio'         'writeclean'    'buffers'
> 0       '17-10-2016 21:10:01'   '0.9'   '16'    '2000040'       '0'
>  '0'     '22'    '6916'
>         '3301.0274389854664426'         '0'     '12953'
> 1       '17-10-2016 21:20:01'   '0.9'   '16'    '2000040'       '0'
>  '0'     '22'    '6916'
>         '3301.0430301885955688'         '0'     '12953'
> 2       '17-10-2016 21:30:02'   '0.9'   '16'    '2000040'       '0'
>  '0'     '22'    '6916'
>         '3301.0583613479540200'         '0'     '12954'
> 3       '17-10-2016 21:40:01'   '0.9'   '16'    '2000040'       '0'
>  '0'     '22'    '6916'
>         '3301.0739223134353932'         '0'     '12954'
> 4       '17-10-2016 21:50:01'   '0.8'   '16'    '2000040'       '0'
>  '0'     '22'    '6916'
>         '3301.0893892062348686'         '0'     '12954'
>
> 5 rows × 11 columns
>
>
> El tema es que me quedan los datos como texto:
>
>
> In [29]:
>
> datos.dtypes
>
> Out[29]:
>
> 'date'          object
> 'cpu'           object
> 'ram'           object
> 'wait'          object
> 'si'            object
> 'so'            object
> 'conexiones'    object
> 'locks'         object
> 'ratio'         object
> 'writeclean'    object
> 'buffers'       object
> dtype: object
>
>
> In [33]:
>
> datos.columns
>
> Out[33]:
>
> Index([u''date'', u''cpu'', u''ram'', u''wait'', u''si'', u''so'',
> u''conexiones'', u''locks'', u''ratio'', u''writeclean'', u''buffers''],
> dtype='object')
>
>
> Probé varias cosas, como por ejemplo pasarle dtype={"'locks'":
> np.float64} a read_csv, pero no logro solucionarlo.
>
> Como puedo hacer que los datos que lea me los tome sin comillas, que los
> nombres de las columnas no tengan comillas y que los números sean números?
>
> Gracias,
>
> Javier.
>
> --
> El matrimo es tan bueno que la gente se muere por casarse
> con mujeres como Nazarena Velez, Margerie Orbin,
> Jordania Linn Graham, Katherine Knight, Stacey Castor, etc.
>
>
>
> ------------------------------
>
> Message: 6
> Date: Tue, 8 Nov 2016 21:30:24 -0300
> From: Santiago Avendaño <santiavenda2 en gmail.com>
> To: Python Argentina <pyar en python.org.ar>
> Subject: Re: [pyar] leer csv con pandas
> Message-ID:
>         <CAF4zDh=fMcUx=ZJ07zzS_AgS=ZiWZAxX0MSK9Bd2B3S-E6CEUA en mail.
> gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Javier,
>
> Me parece que lo que te está molestanto ahí son las comillas simples.
>
> Hay dos parámetros de la funcion read_csv[0] que te podrían servir:
>
>    - converters: le podes pasar un diccionario(column_name,
>    funcion_de_conversion), donde funcion_de_conversion es la función que
>    elimina las comillas y te convierte el dato al tipo requerido
>    - names: que te permite setear el nombre de las columnas (por ejemplo
>    podrías pasarle ['date', 'cpu', 'ram', 'wait', 'si', 'so', 'conexiones',
>    'locks', 'ratio', 'writeclean', 'buffers'])
>
> Avisame si podes resolverlo con estos parámetros y sino lo vemos con más
> detalle.
>
> Saludos
>
> [0]
> http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html
>
> Santiago Avendaño
> http://about.me/santiavenda2
>
> El 8 de noviembre de 2016, 20:12, Javier Marcon <javiermarcon en gmail.com>
> escribió:
>
> > Hola, tengo un log en formato csv que quiero graficar con pandas, pero
> > el tema es que cuando lo leo no logro que me saque los caracteres que
> > que encierran los datos. El csv está escrito asi:
> >
> > javier en javier-System-Product-Name:~$ head -5 /var/log/postgres_locks.log
> > 'date', 'cpu', 'ram', 'wait', 'si', 'so', 'conexiones', 'locks',
> > 'ratio', 'writeclean', 'buffers'
> > '17-10-2016 21:10:01', '0.9', '16', '2000040', '0', '0', '22', '6916',
> > '3301.0274389854664426', '0', '12953'
> > '17-10-2016 21:20:01', '0.9', '16', '2000040', '0', '0', '22', '6916',
> > '3301.0430301885955688', '0', '12953'
> > '17-10-2016 21:30:02', '0.9', '16', '2000040', '0', '0', '22', '6916',
> > '3301.0583613479540200', '0', '12954'
> > '17-10-2016 21:40:01', '0.9', '16', '2000040', '0', '0', '22', '6916',
> > '3301.0739223134353932', '0', '12954'
> > javier en javier-System-Product-Name:~$
> >
> > Y en un ipython notebook pongo:
> >
> > import pandas as pd
> > import numpy as np
> > import matplotlib.pyplot as plt
> > %matplotlib inline
> > datos =pd.read_csv("/var/log/datos.log", sep=', ', quotechar="'")
> > datos.head()
> >
> > y obtengo:
> >
> >
> >         'date'  'cpu'   'ram'   'wait'  'si'    'so'    'conexiones'
> > 'locks'
> > 'ratio'         'writeclean'    'buffers'
> > 0       '17-10-2016 21:10:01'   '0.9'   '16'    '2000040'       '0'
> >  '0'     '22'    '6916'
> >         '3301.0274389854664426'         '0'     '12953'
> > 1       '17-10-2016 21:20:01'   '0.9'   '16'    '2000040'       '0'
> >  '0'     '22'    '6916'
> >         '3301.0430301885955688'         '0'     '12953'
> > 2       '17-10-2016 21:30:02'   '0.9'   '16'    '2000040'       '0'
> >  '0'     '22'    '6916'
> >         '3301.0583613479540200'         '0'     '12954'
> > 3       '17-10-2016 21:40:01'   '0.9'   '16'    '2000040'       '0'
> >  '0'     '22'    '6916'
> >         '3301.0739223134353932'         '0'     '12954'
> > 4       '17-10-2016 21:50:01'   '0.8'   '16'    '2000040'       '0'
> >  '0'     '22'    '6916'
> >         '3301.0893892062348686'         '0'     '12954'
> >
> > 5 rows × 11 columns
> >
> >
> > El tema es que me quedan los datos como texto:
> >
> >
> > In [29]:
> >
> > datos.dtypes
> >
> > Out[29]:
> >
> > 'date'          object
> > 'cpu'           object
> > 'ram'           object
> > 'wait'          object
> > 'si'            object
> > 'so'            object
> > 'conexiones'    object
> > 'locks'         object
> > 'ratio'         object
> > 'writeclean'    object
> > 'buffers'       object
> > dtype: object
> >
> >
> > In [33]:
> >
> > datos.columns
> >
> > Out[33]:
> >
> > Index([u''date'', u''cpu'', u''ram'', u''wait'', u''si'', u''so'',
> > u''conexiones'', u''locks'', u''ratio'', u''writeclean'', u''buffers''],
> > dtype='object')
> >
> >
> > Probé varias cosas, como por ejemplo pasarle dtype={"'locks'":
> > np.float64} a read_csv, pero no logro solucionarlo.
> >
> > Como puedo hacer que los datos que lea me los tome sin comillas, que los
> > nombres de las columnas no tengan comillas y que los números sean
> números?
> >
> > Gracias,
> >
> > Javier.
> >
> > --
> > El matrimo es tan bueno que la gente se muere por casarse
> > con mujeres como Nazarena Velez, Margerie Orbin,
> > Jordania Linn Graham, Katherine Knight, Stacey Castor, etc.
> >
> > _______________________________________________
> > pyar mailing list pyar en python.org.ar
> > http://listas.python.org.ar/listinfo/pyar
> >
> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >
> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> > Argentina - http://www.usla.org.ar
> ------------ próxima parte ------------
> Se ha borrado un adjunto en formato HTML...
> URL: <http://listas.python.org.ar/pipermail/pyar/attachments/
> 20161108/74237d18/attachment.html>
>
> ------------------------------
>
> Subject: Pié de página del digest
>
> _______________________________________________
> pyar mailing list
> pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
>
> ------------------------------
>
> Fin de Resumen de pyar, Vol 81, Envío 12
> *****************************************
>



-- 
NATS
*Cuando le preguntaron adonde queria llegar  Charlie Parker contesto:*
*"Quiero llegar a notas hermosas"*"

P *Please consider the environment before printing this email*
*Por favor, tené en cuenta el medio ambiente antes de imprimir este imail. *

*Join the campaign at http://thinkBeforePrinting.org
<http://thinkbeforeprinting.org/> *
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20161109/074bb272/attachment-0001.html>


Más información sobre la lista de distribución pyar