[Python-es] Obtener índices para un resample con Pandas

AGTUGO agtugo en gmail.com
Jue Jul 10 19:43:23 CEST 2014


Excelente porción de código:

grouper = pd.TimeGrouper("1M")
ext_group = datos_de_partida.groupby(grouper)

Se ve bastante elegante y leíble, ahora que lo pienso implementar una hoja
de calculo tipo excel algo parecido a pyspread, con un
modelo-vista-controlador sería relativamente sencillo; todas las
herramientas para el modelo ya estan ahí.

Algo a lo que me enfrento aquí en mi trabajo es que hay hojas de excel muy
bien hechas, detalladas con cientos de formulas, llamadas a otros
programas, etc. Pero la flexibilidad tiene un límite o no es sencilla de
alcanzar (.net), la preocupación por multiplataforma no existe ya que el
100% de las computadoras son windows, con bastante justificación ya que los
programas bastante específicos son desarrolados principalmente para
windows, con versiones nada  buenas para linux en mi opinión.

Hay por ahí un compilador de excel que te pasa las ecuaciones de excel a
python y las uniones entre formulas las hacen con grafos, con las ventajas
de ver las conexiones, haciendo fácil la simplificación, y la optimización.
No he podido dar el salto de implementar python en mi trabajo diario que es
Ingeniero de Diseño (aviación) con lo que tengo ahorita mis soluciones en
python son más impracticas aún que las que ya existen aquí, cosas como
poder sacar la información de un JT (formato iso de SIEMENS) no es aún tan
trivial y requiere bastante tiempo. Para labores pequeñas como
monte-carlo,six-sigma, risk analysis, calculos análiticos, me sirve bien.


2014-07-10 2:02 GMT-05:00 Kiko <kikocorreoso en gmail.com>:

>
> El 9 de julio de 2014, 21:34, Kiko <kikocorreoso en gmail.com> escribió:
>
>
>> El 9 de julio de 2014, 18:03, AGTUGO <agtugo en gmail.com> escribió:
>>
>> ¿Podrías pasar una porción de tu código para fines educativos de la
>>> solución?
>>>
>>>
>> Mañana a primera hora lo tienes.
>>
>> De nuevo, gracias.
>>
>
> Ahí va:
>
> ----------------------------------------------------------------------------------------------------------------
> import numpy as np
> import pandas as pd
>
> # Creo una serie con distribución normal, media 5 y desv estándar 5
> # para hacer las pruebas
> mu = 5
> sigma = 5
> data = sigma * np.random.randn(300000) + mu
> index = pd.date_range('1970/01/01', periods = 300000, freq = 'H')
>
> # Creo un dataframe de datos horarios
> datos_de_partida = pd.DataFrame(data, index = index)
>
> # Extraigo los máximos (o lo que quieras) mensuales
> # 1M indica 1 mes
> # Si quisiera los máximos anuales usaría 1A, etc.
> grouper = pd.TimeGrouper("1M")
> ext_group = datos_de_partida.groupby(grouper)
>
> # Creo un df con los índices, las fechas de los extremos
> extremes = ext_group.max()
> extremes.index = ext_group.idxmax().values
> # La columna de extremos la llamo 'extremes'
> extremes.columns = ['extremes']
> # Y además creo una columna con las fechas de esos extremos
> # Las fechas ya las tengo en los índices pero me lo necesito así
> extremes['dates'] = extremes.index
>
> ----------------------------------------------------------------------------------------------------------------
> El resultado sería algo así como:
> extremes dates   1970-01-01 22:00:00 17.937839 1970-01-01 22:00:00  1970-02-20
> 09:00:00 18.647249 1970-02-20 09:00:00  1970-03-11 06:00:00 25.111108 1970-03-11
> 06:00:00  1970-04-27 16:00:00 20.998373 1970-04-27 16:00:00  1970-05-17
> 03:00:00 18.304925 1970-05-17 03:00:00  1970-06-12 23:00:00 20.684410 1970-06-12
> 23:00:00  1970-07-19 18:00:00 22.098663 1970-07-19 18:00:00  1970-08-13
> 06:00:00 20.925366 1970-08-13 06:00:00  1970-09-20 03:00:00 20.409511 1970-09-20
> 03:00:00
>  ... y continua para cada mes hasta el final del df datos_de_partida
>
> Saludos.
>
> P.D.: El resultado debe ser 100x más eficiente que mi implementación
> original \o/
>
>
>>
>>> _______________________________________________
>>> 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/
>
>


-- 
Arturo Muñoz Tolosa
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140710/075ff069/attachment.html>


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