[Python-es] Promedios díarios en python

Alberto Curro bertothunder en gmail.com
Vie Oct 18 09:36:33 CEST 2013


Hola,

El 16 de octubre de 2013 03:15, Victor Villalobos <revxfire en gmail.com>escribió:

> Si estas usando SqLite o alguna BD con sql, también puedes sencillamente
> usar las operaciones SQL de sum(), count() y dividir sum / count, de las
> columnas que te interesan, lo digo saltándome del tema python, pero también
> es una opción y fácil de usar.
>

En este mismo problema, es lo que yo hago. Tengo cientos de CSVs generados
desde logs de distintas aplicaciones, y los inserto primero en una base de
datos SQLite con una pequeña aplicación python (5 segundos para 1 millón de
registros, aprox. 120Mb de base de datos SQLite).

Una segunda aplicación abre después la base de datos SQLite, y arranca las
consultas y guarda los resultados; por motivos técnicos, tengo que
controlar el uso de CPU, por lo que todas estas aplicaciones se corren como
trabajos cron, cada una muy pequeña y de uso de CPU intenso pero muy, muy
corto.

Una tercera aplicación recoge los resultados, genera informes (PDF, otros
CSV), etc.

Por último un cuarto trabajo cron comprime la base de datos SQLite y la
guarda en un repositorio de backup, donde estará unos días (por si se
necesita consultar esos datos de nuevo).

 Saludos
 Alberto


> Ejemplo:
> select sum(SALARIO) / count(*) as MEDIA_SALARIOS
>   from EMPLEADOS
>
> Saludos.
>
>
> El 8 de octubre de 2013 10:19, Juan Luis Cano <juanlu001 en gmail.com>escribió:
>
> 2013/10/8 Boris Vladimir Comi <glez_b en comunidad.unam.mx>
>>
>>>  Me falto aclarar que los promedios que obtengo con el codigo, usando
>>> numpy, son los promedios de todos los datos y yo estoy interesado en
>>> obtener los promedios díarios, como se puede lograr eso?
>>>
>>
>>
>> Nada más tienes que usar mean(axis=1).
>>
>>
>>
>>>  ------------------------------
>>> *De:* Boris Vladimir Comi
>>> *Enviado:* martes, 08 de octubre de 2013 02:43 a.m.
>>>
>>> *Para:* La lista de python en castellano
>>> *Asunto:* RE: [Python-es] Promedios díarios en python
>>>
>>>   Gracias Alberto y Kiko:
>>>
>>> Si tengo instaladas las librerias de numpy y pandas. Al obtener los
>>> promedios, maximo y minimo de una base de datos de prueba cuya estructura
>>> es como sigue:
>>>
>>> Fecha, lat, lon, id, humedad,temperatura,precipitacion
>>>
>>> Para leer los datos y obtener los estadísticos lo hago de dos maneras:
>>>
>>> usando numpy:
>>>
>>> from numpy import *
>>> from scipy import *
>>> import numpy as np
>>>
>>>
>>> data=np.loadtxt('path-tracks.csv',delimiter=',',skiprows=1,dtype=str)
>>>
>>> data1=np.loadtxt('path-tracks.csv',delimiter=',',skiprows=1,dtype=int,usecols=[4,5])
>>>
>>> print data
>>>
>>> [['2/5/04 6:45 AM' '19.7' '-95.2' '1' '45' '-38' '1']
>>>  ['2/5/04 7:45 AM' '19.7' '-94.7' '1' '34' '-48' '1']
>>>  ['2/5/04 8:45 AM' '19.3' '-93.9' '1' '57' '-60' '1']
>>>  ['2/5/04 9:45 AM' '19' '-93.5' '1' '89' '-58' '1']
>>>  ['2/5/04 10:45 AM' '19' '-92.8' '1' '34' '-50' '2']
>>>  ['2/5/04 11:45 AM' '19.2' '-92.6' '1' '23' '-40' '3']
>>>  ['2/5/04 12:45 PM' '19.9' '-93' '1' '10' '-43' '4']
>>>  ['2/5/04 1:15 PM' '20' '-92.8' '1' '50' '-32' '2']
>>>  ['30/5/04 4:45 AM' '23.1' '-100.2' '2' '45' '-45' '3']
>>>  ['30/5/04 5:45 AM' '23.2' '-100' '2' '68' '-56' '2']
>>>  ['30/5/04 6:45 AM' '23.3' '-100' '2' '90' '-48' '1']
>>>  ['30/5/04 7:45 AM' '23.3' '-100.2' '2' '100' '-32' '1']
>>>  ['31/5/04 3:15 AM' '23.4' '-99' '3' '12' '-36' '1']
>>>  ['31/5/04 4:15 AM' '23.5' '-98.9' '3' '34' '-46' '1']
>>>  ['31/5/04 5:15 AM' '23.6' '-98.7' '3' '56' '-68' '2']
>>>  ['31/5/04 6:15 AM' '23.7' '-98.8' '3' '78' '-30' '1']]
>>>
>>> print 'mean:', data1.mean(axis=0)
>>> print 'max:', data1.max(axis=0)
>>> print 'min:', data1.min(axis=0)
>>>
>>> mean: [ 51.5625 -45.625 ]
>>> max: [100 -30]
>>> min: [ 10 -68]
>>>
>>> la pregunta es: como obtengo la suma unicamente de la columna
>>> precipitacion?
>>>
>>> Usando pandas:
>>>
>>> import pandas as pd
>>>
>>> df = pd.read_csv('path-tracks.csv', index_col= 'Date', parse_dates=[0])
>>> df
>>>
>>>                 Lat Lon ID Moisture Temperature Precipitacion
>>>
>>> Date
>>> 2004-02-05 06:45:00 19.7 -95.2 1 45 -38 1
>>> 2004-02-05 07:45:00 19.7 -94.7 1 34 -48 1
>>> 2004-02-05 08:45:00 19.3 -93.9 1 57 -60 1
>>> 2004-02-05 09:45:00 19.0 -93.5 1 89 -58 1
>>> 2004-02-05 10:45:00 19.0 -92.8 1 34 -50 2
>>> 2004-02-05 11:45:00 19.2 -92.6 1 23 -40 3
>>> 2004-02-05 12:45:00 19.9 -93.0 1 10 -43 4
>>> 2004-02-05 13:15:00 20.0 -92.8 1 50 -32 2
>>> 2004-05-30 04:45:00 23.1 -100.2 2 45 -45 3
>>>
>>> 2004-05-30 05:45:00 23.2 -100.0 2 68 -56 2
>>> 2004-05-30 06:45:00 23.3 -100.0 2 90 -48 1
>>> 2004-05-30 07:45:00 23.3 -100.2 2 100 -32 1
>>> 2004-05-31 03:15:00 23.4 -99.0 3 12 -36 1
>>> 2004-05-31 04:15:00 23.5 -98.9 3 34 -46 1
>>> 2004-05-31 05:15:00 23.6 -98.7 3 56 -68 2
>>> 2004-05-31 06:15:00 23.7 -98.8 3 78 -30 1
>>>
>>>
>>>  Al intentar conseguir, por ejmplo la suma diaria:
>>>
>>> df.resample('D',how='sum')
>>>
>>> obtengo lo siguiente:
>>>
>>>           Lat    Lon  ID  Moisture  Temperature
>>>
>>> Date
>>> 2004-02-06 155.8 -748.5 8 342 -369
>>> 2004-02-07 NaN NaN NaN NaN NaN
>>> 2004-02-08 NaN NaN NaN NaN NaN
>>> 2004-02-09 NaN NaN NaN NaN NaN
>>> 2004-02-10 NaN NaN NaN NaN NaN
>>> 2004-02-11 NaN NaN NaN NaN NaN
>>> 2004-02-12 NaN NaN NaN NaN NaN
>>> 2004-02-13 NaN NaN NaN NaN NaN
>>> 2004-02-14 NaN NaN NaN NaN NaN
>>> 2004-02-15 NaN NaN NaN NaN NaN
>>> 2004-02-16 NaN NaN NaN NaN NaN
>>> 2004-02-17 NaN NaN NaN NaN NaN
>>> 2004-02-18 NaN NaN NaN NaN NaN
>>> 2004-02-19 NaN NaN NaN NaN NaN
>>> 2004-02-20 NaN NaN NaN NaN NaN
>>> 2004-02-21 NaN NaN NaN NaN NaN
>>> 2004-02-22 NaN NaN NaN NaN NaN
>>> 2004-02-23 NaN NaN NaN NaN NaN
>>> 2004-02-24 NaN NaN NaN NaN NaN
>>> 2004-02-25 NaN NaN NaN NaN NaN
>>> 2004-02-26 NaN NaN NaN NaN NaN
>>> 2004-02-27 NaN NaN NaN NaN NaN
>>> 2004-02-28 NaN NaN NaN NaN NaN
>>> 2004-02-29 NaN NaN NaN NaN NaN
>>> 2004-03-01 NaN NaN NaN NaN NaN
>>> 2004-03-02 NaN NaN NaN NaN NaN
>>> 2004-03-03 NaN NaN NaN NaN NaN
>>> 2004-03-04 NaN NaN NaN NaN NaN
>>> 2004-03-05 NaN NaN NaN NaN NaN
>>> 2004-03-06 NaN NaN NaN NaN NaN
>>> 2004-03-07 NaN NaN NaN NaN NaN
>>> 2004-03-08 NaN NaN NaN NaN NaN
>>> 2004-03-09 NaN NaN NaN NaN NaN
>>> 2004-03-10 NaN NaN NaN NaN NaN
>>> 2004-03-11 NaN NaN NaN NaN NaN
>>> 2004-03-12 NaN NaN NaN NaN NaN
>>> 2004-03-13 NaN NaN NaN NaN NaN
>>> 2004-03-14 NaN NaN NaN NaN NaN
>>> 2004-03-15 NaN NaN NaN NaN NaN
>>> 2004-03-16 NaN NaN NaN NaN NaN
>>> 2004-03-17 NaN NaN NaN NaN NaN
>>> 2004-03-18 NaN NaN NaN NaN NaN
>>> 2004-03-19 NaN NaN NaN NaN NaN
>>> 2004-03-20 NaN NaN NaN NaN NaN
>>> 2004-03-21 NaN NaN NaN NaN NaN
>>> 2004-03-22 NaN NaN NaN NaN NaN
>>> 2004-03-23 NaN NaN NaN NaN NaN
>>> 2004-03-24 NaN NaN NaN NaN NaN
>>> 2004-03-25 NaN NaN NaN NaN NaN
>>> 2004-03-26 NaN NaN NaN NaN NaN
>>> 2004-03-27 NaN NaN NaN NaN NaN
>>> 2004-03-28 NaN NaN NaN NaN NaN
>>> 2004-03-29 NaN NaN NaN NaN NaN
>>> 2004-03-30 NaN NaN NaN NaN NaN
>>> 2004-03-31 NaN NaN NaN NaN NaN
>>> 2004-04-01 NaN NaN NaN NaN NaN
>>> 2004-04-02 NaN NaN NaN NaN NaN
>>> 2004-04-03 NaN NaN NaN NaN NaN
>>> 2004-04-04 NaN NaN NaN NaN NaN
>>> 2004-04-05 NaN NaN NaN NaN NaN
>>> 2004-04-06 NaN NaN NaN NaN NaN
>>> 2004-04-07 NaN NaN NaN NaN NaN
>>> 2004-04-08 NaN NaN NaN NaN NaN
>>> 2004-04-09 NaN NaN NaN NaN NaN
>>> 2004-04-10 NaN NaN NaN NaN NaN
>>> 2004-04-11 NaN NaN NaN NaN NaN
>>> 2004-04-12 NaN NaN NaN NaN NaN
>>> 2004-04-13 NaN NaN NaN NaN NaN
>>> 2004-04-14 NaN NaN NaN NaN NaN
>>> 2004-04-15 NaN NaN NaN NaN NaN
>>> 2004-04-16 NaN NaN NaN NaN NaN
>>> 2004-04-17 NaN NaN NaN NaN NaN
>>> 2004-04-18 NaN NaN NaN NaN NaN
>>> 2004-04-19 NaN NaN NaN NaN NaN
>>> 2004-04-20 NaN NaN NaN NaN NaN
>>> 2004-04-21 NaN NaN NaN NaN NaN
>>> 2004-04-22 NaN NaN NaN NaN NaN
>>> 2004-04-23 NaN NaN NaN NaN NaN
>>> 2004-04-24 NaN NaN NaN NaN NaN
>>> 2004-04-25 NaN NaN NaN NaN NaN
>>> 2004-04-26 NaN NaN NaN NaN NaN
>>> 2004-04-27 NaN NaN NaN NaN NaN
>>> 2004-04-28 NaN NaN NaN NaN NaN
>>> 2004-04-29 NaN NaN NaN NaN NaN
>>> 2004-04-30 NaN NaN NaN NaN NaN
>>> 2004-05-01 NaN NaN NaN NaN NaN
>>> 2004-05-02 NaN NaN NaN NaN NaN
>>> 2004-05-03 NaN NaN NaN NaN NaN
>>> 2004-05-04 NaN NaN NaN NaN NaN
>>> 2004-05-05 NaN NaN NaN NaN NaN
>>> 2004-05-06 NaN NaN NaN NaN NaN
>>> 2004-05-07 NaN NaN NaN NaN NaN
>>> 2004-05-08 NaN NaN NaN NaN NaN
>>> 2004-05-09 NaN NaN NaN NaN NaN
>>> 2004-05-10 NaN NaN NaN NaN NaN
>>> 2004-05-11 NaN NaN NaN NaN NaN
>>> 2004-05-12 NaN NaN NaN NaN NaN
>>> 2004-05-13 NaN NaN NaN NaN NaN
>>> 2004-05-14 NaN NaN NaN NaN NaN
>>> 2004-05-15 NaN NaN NaN NaN NaN
>>> 2004-05-16 NaN NaN NaN NaN NaN
>>> 2004-05-17 NaN NaN NaN NaN NaN
>>> 2004-05-18 NaN NaN NaN NaN NaN
>>> 2004-05-19 NaN NaN NaN NaN NaN
>>> 2004-05-20 NaN NaN NaN NaN NaN
>>> 2004-05-21 NaN NaN NaN NaN NaN
>>> 2004-05-22 NaN NaN NaN NaN NaN
>>> 2004-05-23 NaN NaN NaN NaN NaN
>>> 2004-05-24 NaN NaN NaN NaN NaN
>>> 2004-05-25 NaN NaN NaN NaN NaN
>>> 2004-05-26 NaN NaN NaN NaN NaN
>>> 2004-05-27 NaN NaN NaN NaN NaN
>>> 2004-05-28 NaN NaN NaN NaN NaN
>>> 2004-05-29 NaN NaN NaN NaN NaN
>>> 2004-05-30 NaN NaN NaN NaN NaN
>>> 2004-05-31 92.9 -400.4 8 303 -181 5
>>> 2004-06-01 94.2 -395.4 12 180 -180
>>>
>>> Hice algo mal, porque no toma en cuenta la fecha correspondiente al
>>> 2004-02-05 6:45:00, 2004-30-05 6:45:00? como solucionar este error?
>>>
>>>
>>>  Agradeceria su ayuda
>>>
>>>
>>>  ------------------------------
>>> *De:* Python-es <python-es-bounces+glez_b=comunidad.unam.mx en python.org>
>>> en nombre de Alberto Chamorro <a.chamorro.ruiz en gmail.com>
>>> *Enviado:* martes, 08 de octubre de 2013 01:06 a.m.
>>> *Para:* La lista de python en castellano
>>> *Asunto:* Re: [Python-es] Promedios díarios en python
>>>
>>>
>>> Y la pregunta sobre Python es....
>>>
>>> ¿Tienes algún algoritmo que hayas intentado hacer al menos?
>>>
>>> Alberto
>>>
>>> Tengo datos mensuales estructurados en la siguiente manera
>>>
>>> Fecha,Time, Humedad, Temperatura, Precipitación Acumulada
>>> 1/01/2011, 00:00, 23, 50, 2,    1/01/2011, 00:15, 22, 45, 1,   1/01/2011, 00:30, 20, 39, 0,  1/01/2011, 01:00, 25, 34, 0,  1/01/2011, 01:15, 23, 50, 0,
>>>            .
>>>            .
>>>            .
>>>            .1/01/2011, 23:45, 22, 40, 0,
>>>            .
>>>            .
>>>            .
>>>            .31/01/2011, 00:00, 23, 45, 0,
>>>
>>> Como puedo conseguir los promedios díarios de las variables Temperatura
>>> y Humedad así como la suma díaria de la Precipitacion Acumulada?
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>>
>>>
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>>
>>>
>>
>>
>> --
>> Juanlu
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
>
> --
> Victor Villalobos
> Bahia Pirata
> Inversiones Villalobos Balzan.
> 0412 6882141
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20131018/f9eb3630/attachment.html>


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