示例#1
0
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)
示例#2
0
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)
示例#3
0
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)
示例#4
0
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)
示例#6
0
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)
示例#7
0
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')
示例#8
0
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)
示例#9
0
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)
示例#10
0
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)
示例#11
0
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)
示例#12
0
文件: vacunacion.py 项目: ianmeza/GHA
    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)
示例#13
0
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)