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

Kiko kikocorreoso en gmail.com
Vie Jul 11 08:46:27 CEST 2014


>
>
>
> 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.
>
>
Si funciona, no lo toques!!!
Existe una cosa que se llama datanitro[1] y otra cosa que se llama PyXLL
[2] que quizá te resulten interesantes para no reinventar la rueda con
PySpread.

[1] https://datanitro.com/
[2] https://www.enthought.com/products/pyxll/


>
> 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
>
> _______________________________________________
> 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/20140711/c77fb261/attachment.html>


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