<div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div>Hola lista,<br><br></div> 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.<br>
<br></div> 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).<br>
<br></div> El CSV contendría algo tal que:<br><br></div>date, time, uri, size, process_request, parsing, transform, forward, result_code, ....<br><br></div> Con pandas cargo el CSV diario y proceso a procesar, que no es otra cosa que agrupamientos:<br>
<br></div> - por result code<br></div> - por hora<br></div> - por tamaño<br><br></div> hay operaciones adicionales, pero que no importan ahora.<br><br></div> 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.<br>
<br></div> 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.<br><br>
</div> Pues bien, mientras jugueteaba, hice esto:<br><br></div> dft = df[df.time > '22:59:59']<br></div> dft = dft[dft.time < '23:59:59']<br><br></div> grouped = dft.groupby('result_code')<br>
<br></div> Básicamente ahora tengo el agrupado hecho, pero si hago un:<br><br></div> grouped.first()<br><br></div> Veo algo tal que:<br><br></div> date time uri process ....<br>
</div>result<br>200 2013/11/18 2013/11/18</div>