[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