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 <kikocorre...@gmail.com>: > > El 9 de julio de 2014, 21:34, Kiko <kikocorre...@gmail.com> escribió: > > >> El 9 de julio de 2014, 18:03, AGTUGO <agt...@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@python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> > > _______________________________________________ > Python-es mailing list > Python-es@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@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/