[Python-es] Parseando CSV con pandas

Alberto Curro bertothunder en gmail.com
Jue Nov 21 00:10:56 CET 2013


Hola lista,

  estoy jugando con Pandas para un pequeño proyecto profesional donde tengo
que analizar datos de unos servidores. Hasta ahora se integraban estos CSV
en servidores SQL y se ejecutaban consultas sobre ellos para generar unos
report.

 Básicamente cada CSV contiene los datos de procesado del servidor, con
requests desde un cliente, tiempos de procesado en el servidor (en
segundos) en las distinas etapas, y forwarding a otro servidor, con su
respuesta (http result code).

 El CSV contendría algo tal que:

date, time, uri, size, process_request, parsing, transform, forward,
result_code, ....

 Con pandas cargo el CSV diario y proceso a procesar, que no es otra cosa
que agrupamientos:

 - por result code
 - por hora
 - por tamaño

 hay operaciones adicionales, pero que no importan ahora.

 La cuestión es: ¿cómo hago el agrupado por hora y result? he probado
varios métodos, alguno me funciona, pero estoy seguro que pandas me ofrece
algo mejor y/o  más eficiente.

 La operación sería el equivalente a un SELECT GROUP BY (time, result_code)
WHERE (time > 22:59:59 y time < 23:59:59), por poner un ejemplo. Y perdonad
mi SQL, hace tiempo que no lo uso... demasiado.

 Pues bien, mientras jugueteaba, hice esto:

 dft = df[df.time > '22:59:59']
 dft = dft[dft.time < '23:59:59']

 grouped = dft.groupby('result_code')

 Básicamente ahora tengo el agrupado hecho, pero si hago un:

 grouped.first()

 Veo algo tal que:

                  date                    time
uri               process           ....
result
200            2013/11/18          2013/11/18
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20131120/a9e4701a/attachment.html>


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