def mergeTrimNor(data1, tabla): normal = gNor.SerieController(cfg) data = [] etiTrim = ["codigo", "nombre", "latitud", "Longitud", "Altitud"] trim = [ "EFM-V", "EFM-N", "AMJ-V", "AMJ-N", "JAS-V", "JAS-N", "OND-V", "OND-N" ] for b in range(0, len(años)): for c in range(0, len(trim)): etiTrim.append(trim[c] + str(años[b])) data.append(etiTrim) añoini = 1981 añofin = 2010 for i in range(1, len(data1)): # from ENSO work vtmp = data1[i] serieRR = normal.getSerieDos(vtmp[0], añoini, añofin, tabla) normalRR = normal.MakeNormal(serieRR) #print( i, " normal de ", vtmp[0], "\n", np.round(np.mean(normalRR.iloc[0:3]), 1), sep="") #print(len(vtmp)," * ",vtmp," \n",len(vtmpo), " *",vtmpo) etiTrim = vtmp[0:5] cont = 0 for j in range(5, len(vtmp)): if cont == 12: cont = 0 etiTrim.extend([vtmp[j]]) etiTrim.extend( [np.round(np.mean(normalRR.iloc[cont:(cont + 3)]), 1)]) cont = cont + 3 #etiTrim data.append(etiTrim) return data
def __init__(self, ): """Constructor for FillMounthSerie""" cfg = cfgdb.configDB() cfg.readConfig("/home/drosero/Documentos/.drvmysql.cnf") self.cfg = cfg self.udb = unir.UnirMchDBFMen(self.cfg) self.esConexion = esController.EstacionController(self.cfg) self.conecmch = serieController.SerieController(self.cfg)
def mchDBFMensual(self, añoi, añof, tabla,seriedbf,es): """Consulta los datos a la base de datos mch para generar una serie de tiempo""" dataEsta = pd.DataFrame() year = np.arange(añoi, añof+1, 1) # crea la lista de años para comparar """Recorre cada una de las estacioens para calcular consultar los datos""" estInfo = estacionController.EstacionController(self.cfg) serie = serieController.SerieController(self.cfg) head = ["codigo", "anio", "ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic"] nulos = [np.nan] seriemch = pd.DataFrame() estCunsul = estInfo.getEstationbycod(es) # consulta la informacion de la estacion por el codigo coddbf = estCunsul['municipio'][0] for i in range(0, len(year)): emptyRow = pd.DataFrame({"a": ["M0000"], "b": [-10], "c": nulos, "d": nulos, "e": nulos, "f": nulos, "g": nulos, "h": nulos, "i": nulos, "j": nulos, "k": nulos, "l": nulos, "m": nulos, "n": nulos}) emptyRow.columns = head emptyRow.iat[0, 1] = year[i] emptyRow.iat[0, 0] = estCunsul.iat[0, 0] tempmch = serie.getSerie(estCunsul.iat[0, 0], year[i], year[i], tabla) #print(tempmch) tempdbf = seriedbf[(seriedbf['ANNO'] == year[i])] #print(tempdbf) if tempmch.empty: #busca dentro del dbf para completar los datos vacios if not tempdbf.empty: for itera in range(2, 14): if not np.isnan(tempdbf.iat[0,itera]): emptyRow.iat[0, itera] = tempdbf.iat[0, itera] else: ########### dataframe filtrado #print("Tempdbf \n",tempdbf,"\nTempmch\n",tempmch,"\nEmpty row\n",emptyRow) for itera in range(2, 14): emptyRow.iat[0, itera] = tempmch.iat[0, itera] if not tempdbf.empty and np.isnan(emptyRow.iat[0,itera]) and not np.isnan(tempdbf.iat[0,itera]): """print(emptyRow.iat[0,1],emptyRow.columns[itera],emptyRow.iat[0, itera] ," to ", tempdbf.iat[0,itera], tempdbf.iat[0,0],tempdbf.columns[itera])""" emptyRow.iat[0, itera] = tempdbf.iat[0,itera] # seriemch[(seriemch['anio'] == thisYear)][seriemch.columns[2:14]]=temp[temp.columns[2:14]] # agrega los valores consultados al frame if i == 0: seriemch = emptyRow #seriemch = seriemch.append(emptyRow, ignore_index=True) else: seriemch = seriemch.append(emptyRow,ignore_index=True) #print(year[i]," datos agregados ",len(seriemch)," i ",i) #print("voy a imprimir los datos para la estacion ", estCunsul.iat[0, 0]) return seriemch
def makeVarArchi(tabla, vec, extr, tempe): d = [vec] conteo = 0 varsEsta = [] estCon = st.EstacionController(cfg) lisCodRR = estCon.getListCod(tabla, 20) for i in range(0, lisCodRR.__len__()): codE = lisCodRR.iloc[i][0] añoini = 1981 añofin = 2010 # obtener un listado de estaciones de temp getestacion = estCon.getEstationbycod(codE) # from ENSO work normal = gNor.SerieController(cfg) serieRR = normal.getSerieDos(codE, añoini, añofin, tabla) normalRR = normal.MakeNormal(serieRR) estacion = estas.Estacion(getestacion["estacion"], getestacion["municipio"], getestacion["nombreEstacion"] \ , getestacion["latitud2"], getestacion["longitud2"], getestacion["altitud"]) norm = norM.NorMBaseM(estacion, [añoini, añofin], normalRR) if norm.hayNormal: varsEsta = [estacion.codigo.values[0], estacion.nombre.values[0], estacion.latitud.values[0] \ , estacion.longitud.values[0], estacion.altitud.values[0]] varsEsta.extend( unirVariacion(codE, 1973, 1976, tabla, norm, extr, tempe)) varsEsta.extend( unirVariacion(codE, 1988, 1989, tabla, norm, extr, tempe)) varsEsta.extend( unirVariacion(codE, 2004, 2006, tabla, norm, extr, tempe)) varsEsta.extend( unirVariacion(codE, 2008, 2009, tabla, norm, extr, tempe)) varsEsta.extend( unirVariacion(codE, 2010, 2012, tabla, norm, extr, tempe)) d.append(varsEsta) conteo = conteo + 1 #else: # print("No se puede calcular la variación para la estacion ", estacion.codigo.values[0]) # end FOR print("procesados ", conteo, "\n\n") return d #Fin funcion del archivo variaciones de tablas de estremas
def unirVariacion(codE, añoini, añofin, tabla, norm, extr, tempe): normal = gNor.SerieController(cfg) if extr == True: serie = normal.getSerieDos(codE, añoini, añofin, tabla) else: serie = normal.getSerie(codE, añoini, añofin, tabla) tama = añofin - añoini + 1 tamS = serie.__len__() varia = [] for i in range(0, tama): temFram = serie.loc[serie['anio'] == (añoini + i)] if temFram.__len__() > 0: if tempe == True: varia.extend(var.Variacion().variacionInstant( norm, temFram.iloc[0][2:])) else: varia.extend(var.Variacion().varicionAgrega( norm, temFram.iloc[0][2:])) else: vacio = np.empty(12) vacio[:] = np.nan varia.extend(vacio) return varia
import numpy as np from src.util import openConfig as cfgdb from src.controller import estacionController as st, serieController as gNor cfg = cfgdb.configDB() cfg.readConfig("/home/drosero/Documentos/.drvmysql.cnf") años = [ 1973, 1974, 1975, 1976, 1988, 1989, 2004, 2005, 2006, 2008, 2009, 2010, 2011, 2012 ] normal = gNor.SerieController(cfg) serie = normal.getSerie('M0024', 2015, 2017, 'V0001') for i in range(0, len(años)): print(años[i], type(años[i])) serieT = normal.getSerieTrim('M0024', 2015, 2017, 'V0001') #print(serie) print("Serie T \n", serieT)
def getTrimes(codE, años, tabla): trim = [] normal = gNor.SerieController(cfg) for i in range(0, len(años)): trim.extend(normal.getSerieTrim(codE, años[i], años[i], tabla)) return trim