def prod1(fte, producto): # Generando producto 1 print('Generando producto 1') df = pd.read_csv(fte, dtype={ 'Codigo region': object, 'Codigo comuna': object }) df.dropna(how='all', inplace=True) utils.regionName(df) # Drop filas de totales por region todrop = df.loc[df['Comuna'] == 'Total'] df.drop(todrop.index, inplace=True) df.to_csv(producto + '.csv', index=False) df_t = df.T df_t.to_csv(producto + '_T.csv', header=False) identifiers = [ 'Region', 'Codigo region', 'Comuna', 'Codigo comuna', 'Poblacion' ] variables = [x for x in df.columns if x not in identifiers] variables.remove('Tasa') df_std = pd.melt(df, id_vars=identifiers, value_vars=variables, var_name='Fecha', value_name='Casos confirmados') df_std.to_csv(producto + '_std.csv', index=False)
def prod2(fte, producto): print('Generando producto 2') df = pd.read_csv(fte, dtype={ 'Codigo region': object, 'Codigo comuna': object }) df.dropna(how='all', inplace=True) utils.regionName(df) # Drop filas de totales por region todrop = df.loc[df['Comuna'] == 'Total'] df.drop(todrop.index, inplace=True) # print(df.columns) dates = [] for eachColumn in df.columns: if '2020' in eachColumn: dates.append(eachColumn) # print('las fechas son ' + str(dates)) for eachdate in dates: filename = eachdate + '-CasosConfirmados.csv' print('escribiendo archivo ' + filename) aux = df[[ 'Region', 'Codigo region', 'Comuna', 'Codigo comuna', 'Poblacion', eachdate ]] aux.rename(columns={eachdate: 'Casos Confirmados'}, inplace=True) aux.to_csv(producto + filename, index=False)
def prod28Nuevo(fte, prod): data = [] for file in glob.glob(fte + '/*FechaInicioSintomas_reportadosSEREMI.csv'): if file != fte + 'FechaInicioSintomas_reportadosSEREMI.csv': date = re.search("\d{4}-\d{2}-\d{2}", file).group(0) df = pd.read_csv(file, sep=",", encoding="utf-8", dtype={'Codigo region': object}) df.dropna(how='all', inplace=True) # Hay semanas epi que se llam S en vez de SE for eachColumn in list(df): if re.search("S\d{2}", eachColumn): print("Bad name " + eachColumn) df.rename( columns={eachColumn: eachColumn.replace('S', 'SE')}, inplace=True) # insert publicacion as column 5 #df['Publicacion'] = date df.insert(loc=2, column='Publicacion', value=date) data.append(df) #normalization data = pd.concat(data) data = data.fillna(0) if 'SEREMI notificacion' in (data.columns): data.rename(columns={'SEREMI notificacion': 'Region'}, inplace=True) #print(list(data)) utils.regionName(data) data.to_csv(prod + '.csv', index=False) identifiers = ['Region', 'Codigo region', 'Publicacion'] variables = [x for x in data.columns if x not in identifiers] df_std = pd.melt(data, id_vars=identifiers, value_vars=variables, var_name='Semana Epidemiologica', value_name='Casos confirmados') df_std.to_csv(prod + '_std.csv', index=False) #create old prod 15 from latest adition latest = max(data['Publicacion']) print(latest) latestdf = data.loc[data['Publicacion'] == latest] latestdf.drop(['Publicacion'], axis=1, inplace=True) latestdf.to_csv(prod.replace('Historico', '.csv'), index=False) df_t = latestdf.T df_t.to_csv(prod.replace('Historico', '_T.csv'), header=False) identifiers = ['Region', 'Codigo region'] variables = [x for x in latestdf.columns if x not in identifiers] df_std = pd.melt(latestdf, id_vars=identifiers, value_vars=variables, var_name='Semana Epidemiologica', value_name='Casos confirmados') df_std.to_csv(prod.replace('Historico', '_std.csv'), index=False)
def prod45(fte, name, producto): fte = fte + name + 'PorComuna.csv' df = pd.read_csv(fte, dtype={ 'Codigo region': object, 'Codigo comuna': object }) df.dropna(how='all', inplace=True) utils.regionName(df) # Drop filas de totales por region todrop = df.loc[df['Comuna'] == 'Total'] df.drop(todrop.index, inplace=True) df.to_csv(producto + '.csv', index=False) df_t = df.T df_t.to_csv(producto + '_T.csv', header=False) copyfile('../input/InformeEpidemiologico/SemanasEpidemiologicas.csv', '../output/producto45/SemanasEpidemiologicas.csv') identifiers = [ 'Region', 'Codigo region', 'Comuna', 'Codigo comuna', 'Poblacion' ] variables = [x for x in df.columns if x not in identifiers] name = name.lower() if name == 'nonotificados': name = 'no notificados' df_std = pd.melt(df, id_vars=identifiers, value_vars=variables, var_name='Semana Epidemiologica', value_name='Casos ' + name) df_std.to_csv(producto + '_std.csv', index=False)
def prod45(fte, fte2, prod): data = [] for file in glob.glob(fte + '/*Casos' + fte2 + 'PorComuna.csv'): print(file) if file != fte + 'Casos' + fte2 + 'PorComuna.csv': date = re.search("\d{4}-\d{2}-\d{2}", file).group(0) df = pd.read_csv(file, sep=",", encoding="utf-8", dtype={'Codigo region': object, 'Codigo comuna': object}) df.dropna(how='all', inplace=True) # Drop filas de totales por region todrop = df.loc[df['Comuna'] == 'Total'] df.drop(todrop.index, inplace=True) # Hay semanas epi que se llam S en vez de SE for eachColumn in list(df): if re.search("S\d{2}", eachColumn): print("Bad name " + eachColumn) df.rename(columns={eachColumn: eachColumn.replace('S', 'SE')}, inplace=True) # insert publicacion as column 5 # df['Publicacion'] = date df.insert(loc=5, column='Publicacion', value=date) data.append(df) name = fte2.lower() if name == 'nonotificados': name = 'no notificados' # normalization data = pd.concat(data) data = data.fillna(0) utils.regionName(data) data.sort_values(['Publicacion', 'Region'], ascending=[True, True], inplace=True) data.to_csv(prod + '.csv', index=False) identifiers = ['Region', 'Codigo region', 'Comuna', 'Codigo comuna', 'Poblacion', 'Publicacion'] variables = [x for x in data.columns if x not in identifiers] df_std = pd.melt(data, id_vars=identifiers, value_vars=variables, var_name='Semana Epidemiologica', value_name='Casos ' + name) df_std.to_csv(prod + '_std.csv', index=False) copyfile('../input/InformeEpidemiologico/SemanasEpidemiologicas.csv', '../output/producto45/SemanasEpidemiologicas.csv') # create old prod 45 from latest adition latest = max(data['Publicacion']) print(latest) latestdf = data.loc[data['Publicacion'] == latest] # print(latestdf) latestdf.drop(['Publicacion'], axis=1, inplace=True) latestdf.to_csv(prod.replace('Historico', '.csv'), index=False) df_t = latestdf.T df_t.to_csv(prod.replace('Historico', '_T.csv'), header=False) identifiers = ['Region', 'Codigo region', 'Comuna', 'Codigo comuna', 'Poblacion'] variables = [x for x in latestdf.columns if x not in identifiers] df_std = pd.melt(latestdf, id_vars=identifiers, value_vars=variables, var_name='Semana Epidemiologica', value_name='Casos ' + name) df_std.to_csv(prod.replace('Historico', '_std.csv'), index=False)
def prod7_8(fte, producto): df = pd.read_csv(fte, dtype={'Codigo region': object}) utils.regionName(df) df = df.replace('-', '',regex=True) df_t = df.T df.to_csv(producto + '.csv', index=False) df_t.to_csv(producto + '_T.csv', header=False) identifiers = ['Region','Codigo region','Poblacion'] variables = [x for x in df.columns if x not in identifiers] df_std = pd.melt(df, id_vars=identifiers, value_vars=variables, var_name='fecha', value_name='numero') df_std.to_csv(producto + '_std.csv', index=False)
def prod15(fte, producto): print('Generando producto 15') df = pd.read_csv(fte, dtype={'Codigo region': object, 'Codigo comuna': object}) df.dropna(how='all', inplace=True) utils.regionName(df) # Drop filas de totales por region todrop = df.loc[df['Comuna'] == 'Total'] df.drop(todrop.index, inplace=True) df.to_csv(producto + '.csv', index=False) df_t = df.T df_t.to_csv(producto + '_T.csv', header=False) copyfile('../input/InformeEpidemiologico/SemanasEpidemiologicas.csv', '../output/producto15/SemanasEpidemiologicas.csv')
def prod1(fte, producto): # Generando producto 1 print('Generando producto 1') df = pd.read_csv(fte, dtype={'Codigo region': object, 'Codigo comuna': object}) df.dropna(how='all', inplace=True) utils.regionName(df) # Drop filas de totales por region todrop = df.loc[df['Comuna'] == 'Total'] df.drop(todrop.index, inplace=True) df.to_csv(producto + '.csv', index=False) df_t = df.T df_t.to_csv(producto + '_T.csv', header=False)
def prod3_13_14(fte): onlyfiles = [f for f in listdir(fte) if isfile(join(fte, f))] cumulativoCasosNuevos = pd.DataFrame({'Region': [], 'Casos nuevos': []}) cumulativoCasosTotales = pd.DataFrame({'Region': [], 'Casos totales': []}) cumulativoFallecidos = pd.DataFrame({'Region': [], 'Fallecidos': []}) print(onlyfiles.sort()) onlyfiles.remove('README.md') for eachfile in onlyfiles: date = eachfile.replace("-CasosConfirmados-totalRegional", "").replace(".csv", "") dataframe = pd.read_csv(fte + eachfile) # sanitize headers dataframe.rename(columns={'Región': 'Region'}, inplace=True) dataframe.rename(columns={'Casos nuevos': 'Casos nuevos'}, inplace=True) dataframe.rename(columns={' Casos nuevos': 'Casos nuevos'}, inplace=True) dataframe.rename(columns={'Casos totales': 'Casos totales'}, inplace=True) dataframe.rename(columns={' Casos totales': 'Casos totales'}, inplace=True) dataframe.rename(columns={' Casos fallecidos': 'Fallecidos'}, inplace=True) if cumulativoCasosNuevos['Region'].empty: cumulativoCasosNuevos[['Region', 'Casos nuevos']] = dataframe[['Region', 'Casos nuevos']] cumulativoCasosNuevos.rename(columns={'Casos nuevos': date}, inplace=True) cumulativoCasosTotales[['Region', 'Casos totales']] = dataframe[['Region', 'Casos totales']] cumulativoCasosTotales.rename(columns={'Casos totales': date}, inplace=True) else: cumulativoCasosNuevos[date] = dataframe['Casos nuevos'] cumulativoCasosTotales[date] = dataframe['Casos totales'] if 'Fallecidos' in dataframe.columns: if cumulativoFallecidos['Region'].empty: cumulativoFallecidos[['Region', 'Fallecidos']] = dataframe[['Region', 'Fallecidos']] cumulativoFallecidos.rename(columns={'Fallecidos': date}, inplace=True) else: cumulativoFallecidos[date] = dataframe['Fallecidos'] # estandarizar nombres de regiones utils.regionName(cumulativoCasosNuevos) utils.regionName(cumulativoCasosTotales) utils.regionName(cumulativoFallecidos) cumulativoCasosNuevos_T = cumulativoCasosNuevos.transpose() cumulativoCasosTotales_T = cumulativoCasosTotales.transpose() cumulativoFallecidos_T = cumulativoFallecidos.transpose() cumulativoCasosNuevos.to_csv('../output/producto13/CasosNuevosCumulativo.csv', index=False) cumulativoCasosNuevos_T.to_csv('../output/producto13/CasosNuevosCumulativo_T.csv', header=False) cumulativoCasosTotales.to_csv('../output/producto3/CasosTotalesCumulativo.csv', index=False) cumulativoCasosTotales_T.to_csv('../output/producto3/CasosTotalesCumulativo_T.csv', header=False) cumulativoFallecidos.to_csv('../output/producto14/FallecidosCumulativo.csv', index=False) cumulativoFallecidos_T.to_csv('../output/producto14/FallecidosCumulativo_T.csv', header=False)
def prod3_13_14_26_27(fte): onlyfiles = [f for f in listdir(fte) if isfile(join(fte, f))] cumulativoCasosNuevos = pd.DataFrame({'Region': [], 'Casos nuevos': []}) cumulativoCasosTotales = pd.DataFrame({'Region': [], 'Casos totales': []}) cumulativoFallecidos = pd.DataFrame({'Region': [], 'Fallecidos': []}) casosNuevosConSintomas = pd.DataFrame({'Region': [], 'Fecha': []}) casosNuevosSinSintomas = pd.DataFrame({'Region': [], 'Fecha': []}) print(onlyfiles.sort()) onlyfiles.remove('README.md') for eachfile in onlyfiles: date = eachfile.replace("-CasosConfirmados-totalRegional", "").replace(".csv", "") dataframe = pd.read_csv(fte + eachfile) # sanitize headers print(eachfile) dataframe.rename(columns={'Región': 'Region'}, inplace=True) dataframe.rename(columns={'Casos nuevos': 'Casos nuevos'}, inplace=True) dataframe.rename(columns={' Casos nuevos': 'Casos nuevos'}, inplace=True) dataframe.rename(columns={'Casos nuevos totales': 'Casos nuevos'}, inplace=True) dataframe.rename(columns={'Casos totales': 'Casos totales'}, inplace=True) dataframe.rename(columns={' Casos totales': 'Casos totales'}, inplace=True) dataframe.rename(columns={' Casos fallecidos': 'Fallecidos'}, inplace=True) dataframe.rename(columns={'Casos nuevos totales': 'Casos nuevos'}, inplace=True) dataframe.rename( columns={'Casos totales acumulados': 'Casos totales'}, inplace=True) dataframe.rename( columns={'Casos nuevos con síntomas': 'Casos nuevos con sintomas'}, inplace=True) dataframe.rename(columns={ ' Casos nuevos con síntomas': 'Casos nuevos con sintomas' }, inplace=True) dataframe.rename(columns={ 'Casos nuevos con síntomas': 'Casos nuevos con sintomas' }, inplace=True) dataframe.rename( columns={'Casos nuevos con sintomas': 'Casos nuevos con sintomas'}, inplace=True) dataframe.rename(columns={ ' Casos nuevos con sintomas': 'Casos nuevos con sintomas' }, inplace=True) dataframe.rename(columns={ 'Casos nuevos con sintomas': 'Casos nuevos con sintomas' }, inplace=True) dataframe.rename( columns={'Casos nuevos sin síntomas': 'Casos nuevos sin sintomas'}, inplace=True) dataframe.rename(columns={ ' Casos nuevos sin síntomas': 'Casos nuevos sin sintomas' }, inplace=True) dataframe.rename(columns={ 'Casos nuevos sin síntomas': 'Casos nuevos sin sintomas' }, inplace=True) dataframe.rename(columns={ 'Casos nuevos sin síntomas*': 'Casos nuevos sin sintomas' }, inplace=True) dataframe.rename(columns={ ' Casos nuevos sin síntomas*': 'Casos nuevos sin sintomas' }, inplace=True) dataframe.rename(columns={ 'Casos nuevos sin síntomas*': 'Casos nuevos sin sintomas' }, inplace=True) dataframe.rename( columns={'Casos nuevos sin sintomas': 'Casos nuevos sin sintomas'}, inplace=True) dataframe.rename(columns={ ' Casos nuevos sin sintomas': 'Casos nuevos sin sintomas' }, inplace=True) dataframe.rename(columns={ 'Casos nuevos sin sintomas': 'Casos nuevos sin sintomas' }, inplace=True) dataframe.rename(columns={ 'Casos nuevos sin sintomas*': 'Casos nuevos sin sintomas' }, inplace=True) dataframe.rename(columns={ ' Casos nuevos sin sintomas*': 'Casos nuevos sin sintomas' }, inplace=True) dataframe.rename(columns={ 'Casos nuevos sin sintomas*': 'Casos nuevos sin sintomas' }, inplace=True) if cumulativoCasosNuevos['Region'].empty: cumulativoCasosNuevos[['Region', 'Casos nuevos' ]] = dataframe[['Region', 'Casos nuevos']] cumulativoCasosNuevos.rename(columns={'Casos nuevos': date}, inplace=True) cumulativoCasosTotales[['Region', 'Casos totales' ]] = dataframe[['Region', 'Casos totales']] cumulativoCasosTotales.rename(columns={'Casos totales': date}, inplace=True) else: print(dataframe.columns) cumulativoCasosNuevos[date] = dataframe['Casos nuevos'] cumulativoCasosTotales[date] = dataframe['Casos totales'] if 'Fallecidos' in dataframe.columns: if cumulativoFallecidos['Region'].empty: cumulativoFallecidos[['Region', 'Fallecidos' ]] = dataframe[['Region', 'Fallecidos']] cumulativoFallecidos.rename(columns={'Fallecidos': date}, inplace=True) else: cumulativoFallecidos[date] = dataframe['Fallecidos'] if 'Casos nuevos con sintomas' in dataframe.columns: if casosNuevosConSintomas['Region'].empty: casosNuevosConSintomas[['Region', 'Fecha']] = dataframe[[ 'Region', 'Casos nuevos con sintomas' ]] casosNuevosConSintomas.rename(columns={'Fecha': date}, inplace=True) else: casosNuevosConSintomas[date] = dataframe[ 'Casos nuevos con sintomas'] if 'Casos nuevos sin sintomas' in dataframe.columns: if casosNuevosSinSintomas['Region'].empty: casosNuevosSinSintomas[['Region', 'Fecha']] = dataframe[[ 'Region', 'Casos nuevos sin sintomas' ]] casosNuevosSinSintomas.rename(columns={'Fecha': date}, inplace=True) else: casosNuevosSinSintomas[date] = dataframe[ 'Casos nuevos sin sintomas'] # estandarizar nombres de regiones utils.regionName(cumulativoCasosNuevos) utils.regionName(cumulativoCasosTotales) utils.regionName(cumulativoFallecidos) utils.regionName(casosNuevosConSintomas) utils.regionName(casosNuevosSinSintomas) cumulativoCasosNuevos_T = cumulativoCasosNuevos.transpose() cumulativoCasosTotales_T = cumulativoCasosTotales.transpose() cumulativoFallecidos_T = cumulativoFallecidos.transpose() casosNuevosConSintomas_T = casosNuevosConSintomas.transpose() casosNuevosSinSintomas_T = casosNuevosSinSintomas.transpose() cumulativoCasosTotales.to_csv( '../output/producto3/CasosTotalesCumulativo.csv', index=False) cumulativoCasosTotales_T.to_csv( '../output/producto3/CasosTotalesCumulativo_T.csv', header=False) identifiers = ['Region'] variables = [ x for x in cumulativoCasosTotales.columns if x not in identifiers ] df_std = pd.melt(cumulativoCasosTotales, id_vars=identifiers, value_vars=variables, var_name='Fecha', value_name='Total') df_std.to_csv('../output/producto3/CasosTotalesCumulativo_std.csv', index=False) cumulativoCasosNuevos.to_csv( '../output/producto13/CasosNuevosCumulativo.csv', index=False) cumulativoCasosNuevos_T.to_csv( '../output/producto13/CasosNuevosCumulativo_T.csv', header=False) cumulativoFallecidos.to_csv( '../output/producto14/FallecidosCumulativo.csv', index=False) cumulativoFallecidos_T.to_csv( '../output/producto14/FallecidosCumulativo_T.csv', header=False) casosNuevosConSintomas.to_csv( '../output/producto26/CasosNuevosConSintomas.csv', index=False) casosNuevosConSintomas_T.to_csv( '../output/producto26/CasosNuevosConSintomas_T.csv', header=False) identifiers = ['Region'] variables = [ x for x in casosNuevosConSintomas.columns if x not in identifiers ] df_std = pd.melt(casosNuevosConSintomas, id_vars=identifiers, value_vars=variables, var_name='Fecha', value_name='Casos confirmados') df_std.to_csv('../output/producto26/CasosNuevosConSintomas_std.csv', index=False) casosNuevosSinSintomas.to_csv( '../output/producto27/CasosNuevosSinSintomas.csv', index=False) casosNuevosSinSintomas_T.to_csv( '../output/producto27/CasosNuevosSinSintomas_T.csv', header=False) identifiers = ['Region'] variables = [ x for x in casosNuevosSinSintomas.columns if x not in identifiers ] df_std = pd.melt(casosNuevosSinSintomas, id_vars=identifiers, value_vars=variables, var_name='Fecha', value_name='Casos confirmados') df_std.to_csv('../output/producto27/CasosNuevosSinSintomas_std.csv', index=False)
def prod7_8(fte, producto): df = pd.read_csv(fte, dtype={'Codigo region': object}) utils.regionName(df) df_t = df.T df.to_csv(producto + '.csv', index=False) df_t.to_csv(producto + '_T.csv', header=False)
def last_to_csv(self): if self.indicador == 'fabricante': ## campana por fabricante self.last_added.rename(columns={'Dose': 'Dosis'}, inplace=True) self.last_added.rename(columns={'Type': 'Fabricante'}, inplace=True) self.last_added["Dosis"] = self.last_added["Dosis"].replace({ "First": "Primera", "Second": "Segunda" }) identifiers = ['Fabricante', 'Dosis'] variables = [ x for x in self.last_added.columns if x not in identifiers ] self.last_added = self.last_added[identifiers + variables] self.last_added.to_csv(self.output + '.csv', index=False) df_t = self.last_added.T df_t.to_csv(self.output + '_t.csv', header=False) df_std = pd.melt(self.last_added, id_vars=identifiers, value_vars=variables, var_name=['Fecha'], value_name='Cantidad') df_std.to_csv(self.output + '_std.csv', index=False) elif self.indicador == 'campana': ## campana por region self.last_added.rename(columns={'Dose': 'Dosis'}, inplace=True) utils.regionName(self.last_added) self.last_added["Dosis"] = self.last_added["Dosis"].replace({ "First": "Primera", "Second": "Segunda" }) identifiers = ['Region', 'Dosis'] variables = [ x for x in self.last_added.columns if x not in identifiers ] self.last_added = self.last_added[identifiers + variables] self.last_added.to_csv(self.output + '.csv', index=False) df_t = self.last_added.T df_t.to_csv(self.output + '_t.csv', header=False) df_std = pd.melt(self.last_added, id_vars=identifiers, value_vars=variables, var_name=['Fecha'], value_name='Cantidad') df_std.to_csv(self.output + '_std.csv', index=False) elif self.indicador == 'edad': ## campana por edad self.last_added.rename(columns={ 'Dose': 'Dosis', 'Age': 'Rango_etario' }, inplace=True) self.last_added["Dosis"] = self.last_added["Dosis"].replace({ "First": "Primera", "Second": "Segunda" }) identifiers = ['Rango_etario', 'Dosis'] variables = [ x for x in self.last_added.columns if x not in identifiers ] self.last_added = self.last_added[identifiers + variables] self.last_added.to_csv(self.output + '.csv', index=False) df_t = self.last_added.T df_t.to_csv(self.output + '_t.csv', header=False) df_std = pd.melt(self.last_added, id_vars=identifiers, value_vars=variables, var_name=['Fecha'], value_name='Cantidad') df_std.to_csv(self.output + '_std.csv', index=False) elif self.indicador == 'caracteristicas_del_vacunado': ## campana por caracter del vacunado self.last_added.rename(columns={ 'Dose': 'Dosis', 'Group': 'Grupo' }, inplace=True) self.last_added["Dosis"] = self.last_added["Dosis"].replace({ "First": "Primera", "Second": "Segunda" }) identifiers = ['Grupo', 'Dosis'] variables = [ x for x in self.last_added.columns if x not in identifiers ] self.last_added = self.last_added[identifiers + variables] self.last_added.to_csv(self.output + '.csv', index=False) df_t = self.last_added.T df_t.to_csv(self.output + '_t.csv', header=False) df_std = pd.melt(self.last_added, id_vars=identifiers, value_vars=variables, var_name=['Fecha'], value_name='Cantidad') df_std.to_csv(self.output + '_std.csv', index=False) elif self.indicador == 'vacunas_region': self.last_added.rename(columns={ 'REGION_CORTO': 'Region', 'COD_COMUNA_FINAL': 'Comuna', 'FECHA_INMUNIZACION': 'Fecha', 'SUM_of_SUM_of_2aDOSIS': 'Segunda_comuna', 'SUM_of_SUM_of_1aDOSIS': 'Primera_comuna' }, inplace=True) self.last_added = self.last_added.dropna(subset=['Fecha']) self.last_added['Fecha'] = pd.to_datetime( self.last_added['Fecha'], format='%d/%m/%Y').dt.strftime("%Y-%m-%d") self.last_added.sort_values(by=['Region', 'Fecha'], inplace=True) utils.regionName(self.last_added) regiones = pd.DataFrame(self.last_added['Region'].unique()) #transformar ## agrupar por comuna self.last_added['Primera'] = self.last_added.groupby( ['Region', 'Fecha'])['Primera_comuna'].transform('sum') self.last_added['Segunda'] = self.last_added.groupby( ['Region', 'Fecha'])['Segunda_comuna'].transform('sum') self.last_added = self.last_added[[ 'Region', 'Fecha', 'Primera', 'Segunda' ]] self.last_added.drop_duplicates(inplace=True) ##llenar fechas para cada region y crear total idx = pd.date_range(self.last_added['Fecha'].min(), self.last_added['Fecha'].max()) df = pd.DataFrame() total = pd.DataFrame( columns=['Region', 'Fecha', 'Primera', 'Segunda']) total = utils.fill_in_missing_dates(total, 'Fecha', 0, idx) total["Region"] = total["Region"].replace({0: 'Total'}) for region in regiones[0]: df_region = self.last_added.loc[self.last_added['Region'] == region] df_region = utils.fill_in_missing_dates( df_region, 'Fecha', 0, idx) df_region["Region"] = df_region["Region"].replace({0: region}) total['Primera'] = df_region['Primera'] + total['Primera'] total['Segunda'] = df_region['Segunda'] + total['Segunda'] df = df.append(df_region, ignore_index=True) total = total.append(df, ignore_index=True) total['Fecha'] = total['Fecha'].dt.strftime("%Y-%m-%d") self.last_added = total ##sumar totales self.last_added['Primera'] = pd.to_numeric( self.last_added['Primera']) self.last_added['Segunda'] = pd.to_numeric( self.last_added['Segunda']) self.last_added['Primera'] = self.last_added.groupby( ['Region'])['Primera'].transform('cumsum') self.last_added['Segunda'] = self.last_added.groupby( ['Region'])['Segunda'].transform('cumsum') #self.last_added['Total'] = self.last_added.sum(numeric_only=True, axis=1) ##transformar en input df = pd.DataFrame() regiones = pd.DataFrame(self.last_added['Region'].unique()) for region in regiones[0]: df_region = self.last_added.loc[self.last_added['Region'] == region] df_region.set_index('Fecha', inplace=True) df_region = df_region[['Primera', 'Segunda']].T df_region.reset_index(drop=True, inplace=True) df = df.append(df_region, ignore_index=True) new_col = [ 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda' ] df.insert(0, column='Dosis', value=new_col) new_col = pd.DataFrame() for region in regiones[0]: col = [region, region] new_col = new_col.append(col, ignore_index=True) df.insert(0, column='Region', value=new_col) self.last_added = df identifiers = ['Region', 'Dosis'] variables = [ x for x in self.last_added.columns if x not in identifiers ] self.last_added = self.last_added[identifiers + variables] self.last_added.to_csv(self.output + '.csv', index=False) df_t = self.last_added.T df_t.to_csv(self.output + '_t.csv', header=False) df_std = pd.melt(self.last_added, id_vars=identifiers, value_vars=variables, var_name=['Fecha'], value_name='Cantidad') df_std.to_csv(self.output + '_std.csv', index=False) df_std.to_json(self.output + '.json', orient='values', force_ascii=False) elif self.indicador == 'vacunas_edad_region': self.last_added.rename(columns={ 'NOMBRE_REGION': 'Region', 'COD_COMUNA': 'Comuna', 'EDAD_ANOS': 'Edad', 'POBLACION': 'Poblacion', '2aDOSIS_RES': 'Segunda_comuna', '1aDOSIS_RES': 'Primera_comuna' }, inplace=True) self.last_added.sort_values(by=['Region', 'Edad'], inplace=True) utils.regionName(self.last_added) regiones = pd.DataFrame(self.last_added['Region'].unique()) # transformar ## agrupar por comuna self.last_added['Primera'] = self.last_added.groupby( ['Region', 'Edad'])['Primera_comuna'].transform('sum') self.last_added['Segunda'] = self.last_added.groupby( ['Region', 'Edad'])['Segunda_comuna'].transform('sum') self.last_added['Poblacion'] = self.last_added.groupby( ['Region', 'Edad'])['Poblacion'].transform('sum') self.last_added = self.last_added[[ 'Region', 'Edad', 'Poblacion', 'Primera', 'Segunda' ]] self.last_added.drop_duplicates(inplace=True) ##crear total df = pd.DataFrame() total = pd.DataFrame( columns=['Region', 'Edad', 'Poblacion', 'Primera', 'Segunda']) total['Edad'] = list(range(15, 81)) total["Region"] = total["Region"].fillna('Total') for region in regiones[0]: df_region = self.last_added.loc[self.last_added['Region'] == region] df_region.reset_index(drop=True, inplace=True) total['Primera'] = total.Primera.fillna( 0) + df_region.Primera.fillna(0) total['Segunda'] = total.Segunda.fillna( 0) + df_region.Segunda.fillna(0) total['Poblacion'] = total.Poblacion.fillna( 0) + df_region.Poblacion.fillna(0) df = df.append(df_region, ignore_index=True) edad = total total = total.append(df, ignore_index=True) self.last_added = total ##transformar en input df = pd.DataFrame() regiones = pd.DataFrame(self.last_added['Region'].unique()) for region in regiones[0]: df_region = self.last_added.loc[self.last_added['Region'] == region] df_region.set_index('Edad', inplace=True) df_region = df_region[['Primera', 'Segunda']].T df_region.reset_index(drop=True, inplace=True) df = df.append(df_region, ignore_index=True) new_col = [ 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda' ] df.insert(0, column='Dosis', value=new_col) new_col = pd.DataFrame() for region in regiones[0]: col = [region, region] new_col = new_col.append(col, ignore_index=True) df.insert(0, column='Region', value=new_col) self.last_added = df identifiers = ['Region', 'Dosis'] variables = [ x for x in self.last_added.columns if x not in identifiers ] self.last_added = self.last_added[identifiers + variables] self.last_added.to_csv(self.output + '.csv', index=False) df_t = self.last_added.T df_t.to_csv(self.output + '_t.csv', header=False) df_std = pd.melt(self.last_added, id_vars=identifiers, value_vars=variables, var_name=['Edad'], value_name='Cantidad') df_std.to_csv(self.output + '_std.csv', index=False) df_std.to_json(self.output + '.json', orient='values', force_ascii=False) elif self.indicador == 'vacunas_edad_sexo': self.last_added.rename(columns={ 'NOMBRE_REGION': 'Region', 'SEXO': 'Sexo', 'EDAD_ANOS': 'Edad', 'POBLACION': 'Poblacion', 'SUM_of_1aDOSIS': 'Primera', 'SUM_of_2aDOSIS': 'Segunda' }, inplace=True) self.last_added.sort_values(by=['Sexo', 'Edad'], inplace=True) self.last_added = self.last_added[[ 'Sexo', 'Edad', 'Primera', 'Segunda' ]] sexo = pd.DataFrame(self.last_added['Sexo'].unique()) ##crear total df = pd.DataFrame() for sex in sexo[0]: total = pd.DataFrame( columns=['Sexo', 'Edad', 'Primera', 'Segunda']) total['Edad'] = list( range(self.last_added.Edad.min(), self.last_added.Edad.max() + 1)) df_sex = self.last_added.loc[self.last_added['Sexo'] == sex] df_sex.reset_index(drop=True, inplace=True) df_sex.index = df_sex['Edad'] total.index = total['Edad'] total['Sexo'] = total.Sexo.fillna(sex) total['Primera'] = total.Primera.fillna( 0) + df_sex.Primera.fillna(0) total['Segunda'] = total.Segunda.fillna( 0) + df_sex.Segunda.fillna(0) df = df.append(total, ignore_index=True) self.last_added = df ##transformar en input df = pd.DataFrame() sexo = pd.DataFrame(self.last_added['Sexo'].unique()) for sex in sexo[0]: df_sex = self.last_added.loc[self.last_added['Sexo'] == sex] df_sex.set_index('Edad', inplace=True) df_sex = df_sex[['Primera', 'Segunda']].T df_sex.reset_index(drop=True, inplace=True) df = df.append(df_sex, ignore_index=True) new_col = [ 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda' ] df.insert(0, column='Dosis', value=new_col) new_col = pd.DataFrame() for sex in sexo[0]: col = [sex, sex] new_col = new_col.append(col, ignore_index=True) df.insert(0, column='Sexo', value=new_col) self.last_added = df identifiers = ['Sexo', 'Dosis'] variables = [ x for x in self.last_added.columns if x not in identifiers ] self.last_added = self.last_added[identifiers + variables] self.last_added.to_csv(self.output + '.csv', index=False) df_t = self.last_added.T df_t.to_csv(self.output + '_t.csv', header=False) df_std = pd.melt(self.last_added, id_vars=identifiers, value_vars=variables, var_name=['Edad'], value_name='Cantidad') df_std.to_csv(self.output + '_std.csv', index=False) df_std.to_json(self.output + '.json', orient='values', force_ascii=False) elif self.indicador == 'vacunas_prioridad': self.last_added.rename(columns={ 'Criterio': 'Grupo', 'Subcriterio': 'Subgrupo', '1aDOSIS': 'Primera', '2aDOSIS': 'Segunda' }, inplace=True) self.last_added.sort_values(by=['Grupo', 'Subgrupo'], inplace=True) self.last_added = self.last_added[[ 'Grupo', 'Subgrupo', 'Primera', 'Segunda' ]] ##transformar en input df = pd.DataFrame() grupos = pd.DataFrame(self.last_added['Grupo'].unique()) for grupo in grupos[0]: df_grupo = self.last_added.loc[self.last_added['Grupo'] == grupo] df_grupo.set_index('Subgrupo', inplace=True) df_grupo = df_grupo[['Primera', 'Segunda']].T df_grupo.reset_index(drop=True, inplace=True) df = df.append(df_grupo, ignore_index=True) new_col = [ 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda', 'Primera', 'Segunda' ] df.insert(0, column='Dosis', value=new_col) new_col = pd.DataFrame() for grupo in grupos[0]: col = [grupo, grupo] new_col = new_col.append(col, ignore_index=True) df.insert(0, column='Grupo', value=new_col) self.last_added = df identifiers = ['Grupo', 'Dosis'] variables = [ x for x in self.last_added.columns if x not in identifiers ] self.last_added = self.last_added[identifiers + variables] self.last_added.to_csv(self.output + '.csv', index=False) df_t = self.last_added.T df_t.to_csv(self.output + '_t.csv', header=False) df_std = pd.melt(self.last_added, id_vars=identifiers, value_vars=variables, var_name=['Subgrupo'], value_name='Cantidad') df_std.to_csv(self.output + '_std.csv', index=False) df_std.to_json(self.output + '.json', orient='values', force_ascii=False) elif self.indicador == 'vacunas_comuna': ##template por comuna df_base = pd.read_csv( '../input/DistribucionDEIS/baseFiles/DEIS_template.csv') df_base['Codigo region'] = df_base['Codigo region'].fillna(0) df_base['Codigo comuna'] = df_base['Codigo comuna'].fillna(0) df_base['Comuna'] = df_base['Comuna'].fillna(0) todrop = df_base.loc[df_base['Comuna'] == 0] df_base.drop(todrop.index, inplace=True) df_base['Codigo region'] = df_base['Codigo region'].astype(int) df_base['Codigo comuna'] = df_base['Codigo comuna'].astype(int) desconocido = df_base['Codigo comuna'] != 0 df_base['Codigo comuna'].where(desconocido, '', inplace=True) Comp = df_base.loc[df_base['Comuna'] != 'Total'] Comp.reset_index(inplace=True) utils.desconocidoName(Comp) for k in range(len(Comp)): if Comp.loc[k, 'Codigo region'] < 10: Comp.loc[k, 'Codigo region'] = '0' + str( Comp.loc[k, 'Codigo region']) else: Comp.loc[k, 'Codigo region'] = str(Comp.loc[k, 'Codigo region']) if Comp.loc[k, 'Codigo comuna'] != '': if Comp.loc[k, 'Codigo comuna'] < 10000: Comp.loc[k, 'Codigo comuna'] = '0' + str( Comp.loc[k, 'Codigo comuna']) else: Comp.loc[k, 'Codigo comuna'] = str( Comp.loc[k, 'Codigo comuna']) comuna = Comp['Comuna'] self.last_added.rename(columns={ 'REGION_CORTO': 'region_residencia', 'COD_COMUNA_FINAL': 'Codigo comuna', 'FECHA_INMUNIZACION': 'Fecha', 'SUM_of_SUM_of_2aDOSIS': 'Segunda_comuna', 'SUM_of_SUM_of_1aDOSIS': 'Primera_comuna' }, inplace=True) self.last_added = self.last_added.dropna(subset=['Fecha']) self.last_added['Fecha'] = pd.to_datetime( self.last_added['Fecha'], format='%d/%m/%Y').dt.strftime("%Y-%m-%d") self.last_added.sort_values(by=['region_residencia', 'Fecha'], inplace=True) utils.regionDEISName(self.last_added) for k in range(len(self.last_added)): if self.last_added.loc[k, 'Codigo comuna'] != '': if self.last_added.loc[k, 'Codigo comuna'] < 10000: self.last_added.loc[k, 'Codigo comuna'] = '0' + str( self.last_added.loc[k, 'Codigo comuna']) else: self.last_added.loc[k, 'Codigo comuna'] = str( self.last_added.loc[k, 'Codigo comuna']) df_sup = Comp[['Codigo comuna', 'Comuna']] df_sup['Codigo comuna'] = df_sup['Codigo comuna'].replace('', 0) self.last_added = self.last_added.merge(df_sup, on="Codigo comuna", how="left") self.last_added.set_index('Comuna', inplace=True) columns_name = self.last_added.columns.values maxSE = self.last_added[columns_name[2]].max() minSE = self.last_added[columns_name[2]].min() print(minSE, maxSE) lenSE = (pd.to_datetime(maxSE) - pd.to_datetime(minSE)).days + 1 startdate = pd.to_datetime(minSE) date_list = pd.date_range(startdate, periods=lenSE).tolist() date_list = [ dt.datetime.strftime(x, "%Y-%m-%d") for x in date_list ] print(date_list) SE_comuna = self.last_added[columns_name[2]] for k in [3, 4]: df = pd.DataFrame(np.zeros((len(comuna), lenSE))) dicts = {} keys = range(lenSE) # values = [i for i in range(lenSE)] for i in keys: dicts[i] = date_list[i] df.rename(columns=dicts, inplace=True) value_comuna = self.last_added[columns_name[k]] value_comuna.fillna(0, inplace=True) i = 0 for row in self.last_added.index: idx = comuna.loc[comuna == row].index.values if idx.size > 0: col = SE_comuna[i] df[col][idx] = value_comuna[i].astype(int) i += 1 df_output = pd.concat([Comp, df], axis=1) df_output.drop(columns=['index'], axis=1, inplace=True) nComunas = [ len(list(group)) for key, group in groupby(df_output['Codigo region']) ] identifiers = [ 'Region', 'Codigo region', 'Comuna', 'Codigo comuna' ] variables = [ x for x in df_output.columns if x not in identifiers ] begRow = 0 for i in range(len(nComunas)): endRow = begRow + nComunas[i] firstList = df_output[identifiers].iloc[endRow - 1].values.tolist() firstList[2] = 'Total' firstList[3] = '' valuesTotal = df_output[variables][begRow:endRow].sum( axis=0).tolist() regionTotal = pd.DataFrame( (firstList + valuesTotal), index=df_output.columns.values).transpose() if i < len(nComunas) - 1: blank_line = pd.Series( np.empty((len(regionTotal), 0)).tolist()) regionTotal = pd.concat([regionTotal, blank_line], axis=0) regionTotal.drop(columns=0, axis=1, inplace=True) temp = pd.concat( [df_output.iloc[begRow:endRow], regionTotal], axis=0) if i == 0: outputDF2 = temp else: outputDF2 = pd.concat([outputDF2, temp], axis=0) if i < len(nComunas) - 1: begRow = endRow outputDF2.reset_index(inplace=True) outputDF2.drop(columns=['index'], axis=1, inplace=True) outputDF2[variables] = outputDF2[variables].dropna( ) # .astype(int) print(outputDF2.head(20)) outputDF2.dropna(how='all', inplace=True) todrop = outputDF2.loc[outputDF2['Comuna'] == 'Total'] outputDF2.drop(todrop.index, inplace=True) if k == 3: name = self.output + '_1eraDosis.csv' outputDF2.to_csv(name, index=False) outputDF2_T = outputDF2.T outputDF2_T.to_csv(name.replace('.csv', '_T.csv'), header=False) identifiers = [ 'Region', 'Codigo region', 'Comuna', 'Codigo comuna' ] outputDF2.drop(columns=['Poblacion'], inplace=True) variables = [ x for x in outputDF2.columns if x not in identifiers ] outputDF2_std = pd.melt(outputDF2, id_vars=identifiers, value_vars=variables, var_name='Fecha', value_name='Primera Dosis') outputDF2_std.to_csv(name.replace('.csv', '_std.csv'), index=False) elif k == 4: name = self.output + '_2daDosis.csv' outputDF2.to_csv(name, index=False) outputDF2_T = outputDF2.T outputDF2_T.to_csv(name.replace('.csv', '_T.csv'), header=False) identifiers = [ 'Region', 'Codigo region', 'Comuna', 'Codigo comuna' ] outputDF2.drop(columns=['Poblacion'], inplace=True) variables = [ x for x in outputDF2.columns if x not in identifiers ] outputDF2_std = pd.melt(outputDF2, id_vars=identifiers, value_vars=variables, var_name='Fecha', value_name='Segunda Dosis') outputDF2_std.to_csv(name.replace('.csv', '_std.csv'), index=False) elif self.indicador == 'vacunas_comuna_edad': ##template por comuna df_base = pd.read_csv( '../input/DistribucionDEIS/baseFiles/DEIS_template.csv') df_base['Codigo region'] = df_base['Codigo region'].fillna(0) df_base['Codigo comuna'] = df_base['Codigo comuna'].fillna(0) df_base['Comuna'] = df_base['Comuna'].fillna(0) todrop = df_base.loc[df_base['Comuna'] == 0] df_base.drop(todrop.index, inplace=True) df_base['Codigo region'] = df_base['Codigo region'].astype(int) df_base['Codigo comuna'] = df_base['Codigo comuna'].astype(int) desconocido = df_base['Codigo comuna'] != 0 df_base['Codigo comuna'].where(desconocido, '', inplace=True) Comp = df_base.loc[df_base['Comuna'] != 'Total'] Comp.reset_index(inplace=True) utils.desconocidoName(Comp) for k in range(len(Comp)): if Comp.loc[k, 'Codigo region'] < 10: Comp.loc[k, 'Codigo region'] = '0' + str( Comp.loc[k, 'Codigo region']) else: Comp.loc[k, 'Codigo region'] = str(Comp.loc[k, 'Codigo region']) if Comp.loc[k, 'Codigo comuna'] != '': if Comp.loc[k, 'Codigo comuna'] < 10000: Comp.loc[k, 'Codigo comuna'] = '0' + str( Comp.loc[k, 'Codigo comuna']) else: Comp.loc[k, 'Codigo comuna'] = str( Comp.loc[k, 'Codigo comuna']) comuna = Comp['Comuna'] self.last_added.rename(columns={ 'NOMBRE_REGION': 'region_residencia', 'COD_COMUNA': 'Codigo comuna', 'EDAD_ANOS': 'Edad', 'SUM_of_SUM_of_2aDOSIS': 'Segunda_comuna', 'SUM_of_SUM_of_1aDOSIS': 'Primera_comuna' }, inplace=True) utils.regionDEISName(self.last_added) for k in range(len(self.last_added)): if self.last_added.loc[k, 'Codigo comuna'] != '': if self.last_added.loc[k, 'Codigo comuna'] < 10000: self.last_added.loc[k, 'Codigo comuna'] = '0' + str( self.last_added.loc[k, 'Codigo comuna']) else: self.last_added.loc[k, 'Codigo comuna'] = str( self.last_added.loc[k, 'Codigo comuna']) df_sup = Comp[['Codigo comuna', 'Comuna']] df_sup['Codigo comuna'] = df_sup['Codigo comuna'].replace('', 0) self.last_added = self.last_added.merge(df_sup, on="Codigo comuna", how="left") self.last_added.set_index('Comuna', inplace=True) columns_name = self.last_added.columns.values maxSE = self.last_added[columns_name[2]].max() minSE = self.last_added[columns_name[2]].min() print(minSE, maxSE) lenSE = maxSE - minSE + 1 date_list = list(range(minSE, maxSE + 1)) print(date_list) SE_comuna = self.last_added[columns_name[2]] for k in [4, 5]: df = pd.DataFrame(np.zeros((len(comuna), lenSE))) dicts = {} keys = range(lenSE) # values = [i for i in range(lenSE)] for i in keys: dicts[i] = date_list[i] df.rename(columns=dicts, inplace=True) value_comuna = self.last_added[columns_name[k]] value_comuna.fillna(0, inplace=True) i = 0 for row in self.last_added.index: idx = comuna.loc[comuna == row].index.values if idx.size > 0: col = SE_comuna[i] df[col][idx] = value_comuna[i].astype(int) i += 1 df_output = pd.concat([Comp, df], axis=1) df_output.drop(columns=['index'], axis=1, inplace=True) nComunas = [ len(list(group)) for key, group in groupby(df_output['Codigo region']) ] identifiers = [ 'Region', 'Codigo region', 'Comuna', 'Codigo comuna' ] variables = [ x for x in df_output.columns if x not in identifiers ] begRow = 0 for i in range(len(nComunas)): endRow = begRow + nComunas[i] firstList = df_output[identifiers].iloc[endRow - 1].values.tolist() firstList[2] = 'Total' firstList[3] = '' valuesTotal = df_output[variables][begRow:endRow].sum( axis=0).tolist() regionTotal = pd.DataFrame( (firstList + valuesTotal), index=df_output.columns.values).transpose() if i < len(nComunas) - 1: blank_line = pd.Series( np.empty((len(regionTotal), 0)).tolist()) regionTotal = pd.concat([regionTotal, blank_line], axis=0) regionTotal.drop(columns=0, axis=1, inplace=True) temp = pd.concat( [df_output.iloc[begRow:endRow], regionTotal], axis=0) if i == 0: outputDF2 = temp else: outputDF2 = pd.concat([outputDF2, temp], axis=0) if i < len(nComunas) - 1: begRow = endRow outputDF2.reset_index(inplace=True) outputDF2.drop(columns=['index'], axis=1, inplace=True) outputDF2[variables] = outputDF2[variables].dropna( ) # .astype(int) print(outputDF2.head(20)) outputDF2.dropna(how='all', inplace=True) todrop = outputDF2.loc[outputDF2['Comuna'] == 'Total'] outputDF2.drop(todrop.index, inplace=True) if k == 4: name = self.output + '_1eraDosis.csv' outputDF2.to_csv(name, index=False) outputDF2_T = outputDF2.T outputDF2_T.to_csv(name.replace('.csv', '_T.csv'), header=False) identifiers = [ 'Region', 'Codigo region', 'Comuna', 'Codigo comuna' ] outputDF2.drop(columns=['Poblacion'], inplace=True) variables = [ x for x in outputDF2.columns if x not in identifiers ] outputDF2_std = pd.melt(outputDF2, id_vars=identifiers, value_vars=variables, var_name='Edad', value_name='Primera Dosis') outputDF2_std.to_csv(name.replace('.csv', '_std.csv'), index=False) elif k == 5: name = self.output + '_2daDosis.csv' outputDF2.to_csv(name, index=False) outputDF2_T = outputDF2.T outputDF2_T.to_csv(name.replace('.csv', '_T.csv'), header=False) identifiers = [ 'Region', 'Codigo region', 'Comuna', 'Codigo comuna' ] outputDF2.drop(columns=['Poblacion'], inplace=True) variables = [ x for x in outputDF2.columns if x not in identifiers ] outputDF2_std = pd.melt(outputDF2, id_vars=identifiers, value_vars=variables, var_name='Edad', value_name='Segunda Dosis') outputDF2_std.to_csv(name.replace('.csv', '_std.csv'), index=False)
def prod15(fte, prod): data_2020 = [] data_2021_1st = [] data_2021_2nd = [] for file in glob.glob(fte + '/*FechaInicioSintomas.csv'): print(file) if file != fte + 'FechaInicioSintomas.csv': date = re.search("\d{4}-\d{2}-\d{2}", file).group(0) if '2020' in date: df = pd.read_csv(file, sep=",", encoding="utf-8", dtype={ 'Codigo region': object, 'Codigo comuna': object }) df.dropna(how='all', inplace=True) # Drop filas de totales por region todrop = df.loc[df['Comuna'] == 'Total'] df.drop(todrop.index, inplace=True) # Hay semanas epi que se llam S en vez de SE for eachColumn in list(df): if re.search("S\d{2}", eachColumn): print("Bad name " + eachColumn) df.rename(columns={ eachColumn: eachColumn.replace('S', 'SE') }, inplace=True) # insert publicacion as column 5 # df['Publicacion'] = date df.insert(loc=5, column='Publicacion', value=date) data_2020.append(df) if '2021' in date: if datetime.strptime(date, "%Y-%m-%d") <= datetime.strptime( '2021-07-01', "%Y-%m-%d"): df = pd.read_csv(file, sep=",", encoding="utf-8", dtype={ 'Codigo region': object, 'Codigo comuna': object }) df.dropna(how='all', inplace=True) # Drop filas de totales por region todrop = df.loc[df['Comuna'] == 'Total'] df.drop(todrop.index, inplace=True) # Hay semanas epi que se llam S en vez de SE for eachColumn in list(df): if re.search("S\d{2}", eachColumn): print("Bad name " + eachColumn) df.rename(columns={ eachColumn: eachColumn.replace('S', 'SE') }, inplace=True) # insert publicacion as column 5 # df['Publicacion'] = date df.insert(loc=5, column='Publicacion', value=date) data_2021_1st.append(df) else: df = pd.read_csv(file, sep=",", encoding="utf-8", dtype={ 'Codigo region': object, 'Codigo comuna': object }) df.dropna(how='all', inplace=True) # Drop filas de totales por region todrop = df.loc[df['Comuna'] == 'Total'] df.drop(todrop.index, inplace=True) # Hay semanas epi que se llam S en vez de SE for eachColumn in list(df): if re.search("S\d{2}", eachColumn): print("Bad name " + eachColumn) df.rename(columns={ eachColumn: eachColumn.replace('S', 'SE') }, inplace=True) # insert publicacion as column 5 # df['Publicacion'] = date df.insert(loc=5, column='Publicacion', value=date) data_2021_2nd.append(df) # normalization 2020 #data_2020 = pd.concat(data_2020) #data_2020 = data_2020.fillna(0) #utils.regionName(data_2020) #data_2020.sort_values(['Publicacion', 'Region'], ascending=[True, True], inplace=True) #data_2020.to_csv(prod + '_2020.csv', index=False) #identifiers = ['Region', 'Codigo region', 'Comuna', 'Codigo comuna', 'Poblacion', 'Publicacion'] #variables = [x for x in data_2020.columns if x not in identifiers] #df_std = pd.melt(data_2020, id_vars=identifiers, value_vars=variables, var_name='Semana Epidemiologica', value_name='Casos confirmados') #df_std.to_csv(prod + '_2020_std.csv', index=False) # normalization 2021 primera mitad data_2021_1st = pd.concat(data_2021_1st) data_2021_1st = data_2021_1st.fillna(0) utils.regionName(data_2021_1st) data_2021_1st.sort_values(['Publicacion', 'Region'], ascending=[True, True], inplace=True) data_2021_1st.to_csv(prod + '_2021_1st.csv', index=False) identifiers = [ 'Region', 'Codigo region', 'Comuna', 'Codigo comuna', 'Poblacion', 'Publicacion' ] variables = [x for x in data_2021_1st.columns if x not in identifiers] df_std = pd.melt(data_2021_1st, id_vars=identifiers, value_vars=variables, var_name='Semana Epidemiologica', value_name='Casos confirmados') df_std.to_csv(prod + '_2021_1st_std.csv', index=False) # normalization 2021 segunda mitad data_2021_2nd = pd.concat(data_2021_2nd) data_2021_2nd = data_2021_2nd.fillna(0) utils.regionName(data_2021_2nd) data_2021_2nd.sort_values(['Publicacion', 'Region'], ascending=[True, True], inplace=True) data_2021_2nd.to_csv(prod + '_2021_2nd.csv', index=False) identifiers = [ 'Region', 'Codigo region', 'Comuna', 'Codigo comuna', 'Poblacion', 'Publicacion' ] variables = [x for x in data_2021_2nd.columns if x not in identifiers] df_std = pd.melt(data_2021_2nd, id_vars=identifiers, value_vars=variables, var_name='Semana Epidemiologica', value_name='Casos confirmados') df_std.to_csv(prod + '_2021_2nd_std.csv', index=False) # create old prod 15 from latest adition copyfile('../input/InformeEpidemiologico/SemanasEpidemiologicas.csv', '../output/producto15/SemanasEpidemiologicas.csv') latest = max(data_2021_2nd['Publicacion']) print(latest) latestdf = data_2021_2nd.loc[data_2021_2nd['Publicacion'] == latest] # print(latestdf) latestdf.drop(['Publicacion'], axis=1, inplace=True) latestdf.to_csv(prod.replace('Historico', '.csv'), index=False) df_t = latestdf.T df_t.to_csv(prod.replace('Historico', '_T.csv'), header=False) identifiers = [ 'Region', 'Codigo region', 'Comuna', 'Codigo comuna', 'Poblacion' ] variables = [x for x in latestdf.columns if x not in identifiers] df_std = pd.melt(latestdf, id_vars=identifiers, value_vars=variables, var_name='Semana Epidemiologica', value_name='Casos confirmados') df_std.to_csv(prod.replace('Historico', '_std.csv'), index=False)