[pyar] leer csv con pandas

Javier Marcon javiermarcon en gmail.com
Mar Nov 8 20:12:46 ART 2016


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.



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