def processing_inventario(path_interim="data/interim/pjud"):
    tqdm.pandas()

    df_inventario = pd.read_feather(f"{path_interim}/clean_Inventario.feather")
    #filtro_fecha = df_inventario[df_inventario['FECHA INGRESO']<='2014-12-31']
    #df_inventario.drop(filtro_fecha.index, axis=0, inplace=True)

    filtro_null = df_inventario[df_inventario['FECHA INGRESO'].isnull()]
    df_inventario.drop(filtro_null.index, axis=0, inplace=True)

    click.echo('Normalizando nombres ...')
    df_inventario['TRIBUNAL'] = df_inventario['TRIBUNAL'].progress_apply(
        data.cleandata.cambio_nombre_juzgados)

    # Codigos no encontrados [13001, -31075, 4014, 4013, 4010, 4011, 0]

    df_inventario['COD. MATERIA'] = df_inventario['COD. MATERIA'].replace(
        13001, 13036)
    filtro_codigo_4011 = df_inventario[df_inventario['COD. MATERIA'] == 4011]
    filtro_codigo_4014 = df_inventario[df_inventario['COD. MATERIA'] == 4014]
    filtro_codigo_4013 = df_inventario[df_inventario['COD. MATERIA'] == 4013]
    filtro_codigo_4010 = df_inventario[df_inventario['COD. MATERIA'] == 4010]
    filtro_codigo_31075 = df_inventario[df_inventario['COD. MATERIA'] == 31075]
    filtro_codigo_0 = df_inventario[df_inventario['COD. MATERIA'] == 0]

    df_inventario.drop(filtro_codigo_4011.index, axis=0, inplace=True)
    df_inventario.drop(filtro_codigo_4014.index, axis=0, inplace=True)
    df_inventario.drop(filtro_codigo_4013.index, axis=0, inplace=True)
    df_inventario.drop(filtro_codigo_4010.index, axis=0, inplace=True)
    df_inventario.drop(filtro_codigo_31075.index, axis=0, inplace=True)
    df_inventario.drop(filtro_codigo_0.index, axis=0, inplace=True)

    path_processed = "data/processed/pjud"
    data.save_feather(df_inventario, 'processes_Inventario', path_processed)
    click.echo('Generado archivo Feather. Proceso Terminado')
def processing_audiencias(path_interim="data/interim/pjud"):
    tqdm.pandas()

    df_audiencias = pd.read_feather(f"{path_interim}/clean_Audiencias.feather")

    click.echo('Procesando Fecha de programación ...')
    df_audiencias = df_audiencias.progress_apply(
        data.transformdata.fecha_programada, axis=1)

    #filtro_fecha = df_audiencias[df_audiencias['FECHA PROGRAMACION AUDIENCIA']<='2014-12-31']
    #df_audiencias.drop(filtro_fecha.index, axis=0, inplace=True)

    click.echo('Normalizando nombres ...')
    df_audiencias['TRIBUNAL'] = df_audiencias['TRIBUNAL'].progress_apply(
        data.cleandata.cambio_nombre_juzgados)

    # Verifico si existen audiencias de causas del período anterior a 2015
    #años = range(2000,2015)
    #fuera_rango = []

    #for año in range(len(años)):
    #    var = "-" + str(años[año])
    #    fuera_rango.append(df_audiencias[df_audiencias['RIT'].str.contains(var)])

    #df_eliminar = pd.concat(fuera_rango, axis=0)
    #df_audiencias.drop(df_eliminar.index, axis=0, inplace=True)

    path_processed = "data/processed/pjud"
    data.save_feather(df_audiencias, 'processes_Audiencias', path_processed)
    click.echo('Generado archivo Feather. Proceso Terminado')
def processing_rol(path_interim="data/interim/pjud"):
    tqdm.pandas()

    df_ingresos_rol = pd.read_feather(
        f"{path_interim}/clean_IngresosRol.feather")
    df_termino_rol = pd.read_feather(
        f"{path_interim}/clean_TerminosRol.feather")

    click.echo('Normalizando nombres...')
    df_ingresos_rol['TRIBUNAL'] = df_ingresos_rol['TRIBUNAL'].progress_apply(
        data.cleandata.cambio_nombre_juzgados)
    df_termino_rol['TRIBUNAL'] = df_termino_rol['TRIBUNAL'].progress_apply(
        data.cleandata.cambio_nombre_juzgados)

    filtro_null = df_termino_rol[df_termino_rol['FECHA INGRESO'].isnull()]
    df_termino_rol.drop(filtro_null.index, axis=0, inplace=True)

    filtro_fecha = df_termino_rol[
        df_termino_rol['FECHA INGRESO'] <= '2014-12-31']
    df_termino_rol.drop(filtro_fecha.index, axis=0, inplace=True)

    click.echo('Procesando Error en fechas ...')
    df_termino_rol = df_termino_rol.progress_apply(
        data.transformdata.fechas_cambiadas, axis=1)

    path_processed = "data/processed/pjud"
    data.save_feather(df_ingresos_rol, 'processes_IngresosRol', path_processed)
    data.save_feather(df_termino_rol, 'processes_TerminosRol', path_processed)
    click.echo('Generado archivo Feather. Proceso Terminado')
def top():
    # Se construye una expresion regular para captar una lista con la información que se desea procesar, y así generar un dataframe.
    regex_top = r"(?:(?P<Region>^[\w \']+)\:\n)|(?P<JG>^[\w. \-]+)\,\scon\s(?P<Jueces>[\w.\-]+)[a-z\-\s\,]+(?P<Competencia>\.|\s[\w. \-\,\']+)"
    matches = re.findall(regex_top, load_article_cot('Tribunales_orales'),
                         re.MULTILINE)

    data_top = []

    for item in range(0, len(matches)):
        if matches[item][0] != '':
            region = matches[item][0].upper()
        else:
            if matches[item][1] != '':
                ciudad = matches[item][1].upper()
                if ciudad.find("TRIBUNAL") != -1:
                    juzgado = ciudad

                else:
                    juzgado = f"TRIBUNAL DE JUICIO ORAL EN LO PENAL {ciudad}"

            if matches[item][2] != '':
                cantidad_jueces = data.cleandata.transforma_numero(
                    matches[item][2])

            if matches[item][3] == '.':
                competencia = ciudad

            else:
                if matches[item][3] != '':
                    competencia = matches[item][3].upper()

            competencia = competencia.replace(" Y ", ",")
            competencia = competencia.replace(" E ", ",")
            competencia = competencia.replace(".", "")

            comunas = competencia.split(",")

            for comuna in comunas:
                data_top.append([
                    region, juzgado, ciudad, cantidad_jueces,
                    comuna.strip(), 'ORAL'
                ])

    df_tribunal_oral = pd.DataFrame(data_top,
                                    columns=[
                                        'REGION', 'TRIBUNAL', 'ASIENTO',
                                        'JUECES', 'COMUNA', 'TIPO JUZGADO'
                                    ])

    df_tribunal_oral['JUECES'] = df_tribunal_oral['JUECES'].fillna(0).astype(
        np.int8)

    click.echo('Eliminando tildes')
    cols = df_tribunal_oral.select_dtypes(include=["object"]).columns
    df_tribunal_oral[cols] = df_tribunal_oral[cols].progress_apply(
        data.cleandata.elimina_tilde)

    data.save_feather(df_tribunal_oral, 'generates_TribunalOral')
    click.echo('Generado archivo Feather. Proceso Terminado')
def juzgados_letras():
    regex_jl = r"(?:Art.\s[0-9\s(bis|ter|quáter)]+\.\s[\w\s]+\,(?P<Region>[\w\s\']+)\,[\w\s]+:\s+)|(?:(?:^[A]\.\-\s[\w\s]+:\s+)(?:(?:[\w\s\,]+[.|\;])+))|(?:(?:[\-\s][\w\s]+\:\s*)|(?:\s*(?:(?P<cant_juzg>[\w]+)(?:\s[J|j][a-z\,\s]+)(?P<JG>[\w\s]+)[\,|y]\s[\w]+\s(?P<Jueces>[\w]+)\s[a-z\s\,]+(?P<Competencia>[\w|\s|\,]+)[\;|\.]$)\s*))"
    matches = re.findall(regex_jl, load_article_cot('juzgadoletras'),
                         re.MULTILINE)

    data_jl = []

    for item in range(0, len(matches)):

        if matches[item][0] != '':
            region = f"REGION{matches[item][0].upper()}"
        else:
            if matches[item][2] != '':
                ciudad = matches[item][2].upper()
                juzgado = f"JUZGADO DE LETRAS Y GARANTIA {ciudad}"

            if matches[item][3] != '':
                if matches[item][3] == 'competencia':
                    cantidad_jueces = 1
                else:
                    cantidad_jueces = data.cleandata.transforma_numero(
                        matches[item][3])

            if matches[item][4] != '':
                if matches[item][4] == 'a':
                    competencia = ciudad

                else:
                    if matches[item][4] != '':
                        competencia = matches[item][4].upper()

                competencia = competencia.replace(" Y ", ",")
                competencia = competencia.replace(" E ", ",")
                competencia = competencia.replace(".", "")

                comunas = competencia.split(",")

                for comuna in comunas:
                    data_jl.append([
                        region, juzgado, ciudad, cantidad_jueces,
                        comuna.strip(), 'LETRAS Y GARANTIA'
                    ])

    df_juzgados_letras = pd.DataFrame(data_jl,
                                      columns=[
                                          'REGION', 'TRIBUNAL', 'ASIENTO',
                                          'JUECES', 'COMUNA', 'TIPO JUZGADO'
                                      ])

    click.echo('Elimando tildes')
    cols = df_juzgados_letras.select_dtypes(include=["object"]).columns
    df_juzgados_letras[cols] = df_juzgados_letras[cols].progress_apply(
        data.cleandata.elimina_tilde)

    data.save_feather(df_juzgados_letras, 'generates_JuzgadosLetras')
    click.echo('Generado archivo Feather. Proceso Terminado')
def garantia():
    regex_jg = r"(?:(?P<Region>^[\w \']+)\:\n\n)|(?P<JG>^[\w. \-]+)\,\scon\s(?P<Jueces>[\w.\-]+)[a-z\-\s\,]+(?P<Competencia>\.|\s[\w. \-\,]+)"
    matches = re.findall(regex_jg, load_article_cot('Juzgados_Garantia'),
                         re.MULTILINE)

    data_jg = []

    for item in range(0, len(matches)):
        if matches[item][0] != '':
            region = matches[item][0].upper()
        else:
            if matches[item][1] != '':
                ciudad = matches[item][1].upper()
                if ciudad.find("JUZGADO") != -1:
                    juzgado = ciudad

                else:
                    juzgado = f"JUZGADO DE GARANTIA {ciudad}"

            if matches[item][2] != '':
                cantidad_jueces = data.cleandata.transforma_numero(
                    matches[item][2])

            if matches[item][3] == '.':
                competencia = ciudad

            else:
                if matches[item][3] != '':
                    competencia = matches[item][3].upper()

            competencia = competencia.replace(" Y ", ",")
            competencia = competencia.replace(" E ", ",")
            competencia = competencia.replace(".", "")

            comunas = competencia.split(",")

            for comuna in comunas:
                data_jg.append([
                    region, juzgado, ciudad, cantidad_jueces,
                    comuna.strip(), 'GARANTIA'
                ])

    df_juzgados_garantia = pd.DataFrame(data_jg,
                                        columns=[
                                            'REGION', 'TRIBUNAL', 'ASIENTO',
                                            'JUECES', 'COMUNA', 'TIPO JUZGADO'
                                        ])

    # Elimino tildes de las columnas object

    cols = df_juzgados_garantia.select_dtypes(include=["object"]).columns
    df_juzgados_garantia[cols] = df_juzgados_garantia[cols].progress_apply(
        data.cleandata.elimina_tilde)

    data.save_feather(df_juzgados_garantia, 'generates_JuzgadosGarantia')
    click.echo('Generado archivo Feather. Proceso Terminado')
def processing_duracion(path_interim="data/interim/pjud"):
    tqdm.pandas()

    df_duracion = pd.read_feather(f"{path_interim}/clean_Duraciones.feather")

    #filtro_fecha = df_duracion[df_duracion['FECHA INGRESO']<='2014-12-31']
    #df_duracion.drop(filtro_fecha.index, axis=0, inplace=True)

    filtro_null = df_duracion[df_duracion['FECHA INGRESO'].isnull()]
    df_duracion.drop(filtro_null.index, axis=0, inplace=True)

    click.echo('Normalizando nombres ...')
    df_duracion['TRIBUNAL'] = df_duracion['TRIBUNAL'].progress_apply(
        data.cleandata.cambio_nombre_juzgados)

    path_processed = "data/processed/pjud"
    data.save_feather(df_duracion, 'processes_Duraciones', path_processed)
    click.echo('Generado archivo Feather. Proceso Terminado')
示例#8
0
def load_data_censo(path="data/raw/censo"):
    tqdm.pandas()

    # Analizo contra los datos extraidos en COT

    df_censo = pd.read_excel(f"{path}/1_1_POBLACION.xls", sheet_name="Comuna")

    df_censo.drop(['Unnamed: 0'], axis='columns', inplace=True)
    df_censo.drop(0, axis='rows', inplace=True)

    old_columns = []
    for col in range(1, 18):
        old_columns.append(f"Unnamed: {col}")

    new_columns = []
    for col in old_columns:
        new_columns.append(df_censo[col][1])

    columnas = dict(zip(old_columns, new_columns))

    df_censo.rename(columns=columnas, inplace=True)

    click.echo('Eliminando tildes')
    cols = df_censo.select_dtypes(include=["object"]).columns
    df_censo[cols] = df_censo[cols].progress_apply(
        data.cleandata.elimina_tilde)

    seleccion_censo_comunas = df_censo.loc[df_censo["EDAD"].str.contains(
        "Total")]
    seleccion_censo_comunas.drop(2, axis='rows', inplace=True)

    seleccion_censo_comunas.loc[seleccion_censo_comunas['NOMBRE COMUNA'] ==
                                'COYHAIQUE', 'NOMBRE COMUNA'] = 'COIHAIQUE'
    seleccion_censo_comunas.loc[seleccion_censo_comunas['NOMBRE COMUNA'] ==
                                'PAIGUANO', 'NOMBRE COMUNA'] = 'PAIHUANO'
    seleccion_censo_comunas.loc[seleccion_censo_comunas['NOMBRE COMUNA'] ==
                                'TILTIL', 'NOMBRE COMUNA'] = 'TIL TIL'
    seleccion_censo_comunas.loc[seleccion_censo_comunas['NOMBRE COMUNA'] ==
                                'AYSEN', 'NOMBRE COMUNA'] = 'AISEN'

    data.save_feather(seleccion_censo_comunas,
                      'generates_Censo2017',
                      path='./data/processed/censo')
    click.echo('Generado archivo Feather. Proceso Terminado')
示例#9
0
def consolidated_materia_rol(path_processed="data/processed/pjud"):
    tqdm.pandas()

    df_materia = pd.read_feather(
        f"{path_processed}/consolidated_Materia.feather")
    df_rol = pd.read_feather(f"{path_processed}/consolidated_Rol.feather")

    df_union = pd.merge(df_rol,
                        df_materia,
                        how='left',
                        on=['COD. CORTE', 'COD. TRIBUNAL', 'RIT'],
                        indicator=True)

    columnas_duplicadas = [
        'index_x', 'index_y', 'CORTE_y', 'TRIBUNAL_y', 'TIPO CAUSA_y',
        'FECHA INGRESO_y', 'AÑO INGRESO_y', 'FECHA TERMINO_y', 'AÑO TERMINO_y',
        'MOTIVO TERMINO_y', 'DURACION CAUSA_y', 'TOTAL TERMINOS_y', '_merge'
    ]

    df_union.drop(columnas_duplicadas, axis='columns', inplace=True)

    df_union.rename(columns={
        'CORTE_x': 'CORTE',
        'TRIBUNAL_x': 'TRIBUNAL',
        'TIPO CAUSA_x': 'TIPO CAUSA',
        'FECHA INGRESO_x': 'FECHA INGRESO',
        'AÑO INGRESO_x': 'AÑO INGRESO',
        'FECHA TERMINO_x': 'FECHA TERMINO',
        'AÑO TERMINO_x': 'AÑO TERMINO',
        'MOTIVO TERMINO_x': 'MOTIVO TERMINO',
        'DURACION CAUSA_x': 'DURACION CAUSA',
        'TOTAL TERMINOS_x': 'TOTAL TERMINOS'
    },
                    inplace=True)

    data.save_feather(df_union, 'consolidated_Materia_Rol', path_processed)
    click.echo('Generado archivo Feather. Proceso Terminado')
def carga_limpieza_ingresos_rol():
    df_ingresos_rol = load_concatenate_by_filename('Ingresos por Rol Penal')

    # Transformamos variables float64 a int16

    df_ingresos_rol['COD. CORTE'] = df_ingresos_rol['COD. CORTE'].fillna(
        0).astype(np.int16)
    df_ingresos_rol['COD. TRIBUNAL'] = df_ingresos_rol['COD. TRIBUNAL'].fillna(
        0).astype(np.int16)
    df_ingresos_rol['AÑO INGRESO'] = df_ingresos_rol['AÑO INGRESO'].fillna(
        0).astype(np.int16)
    df_ingresos_rol.drop(['N°'], axis='columns', inplace=True)

    click.echo('Transformando Fechas')
    df_ingresos_rol['FECHA INGRESO'] = df_ingresos_rol[
        'FECHA INGRESO'].progress_apply(convierte_fecha)

    click.echo('Eliminando espacios en columnas objetos')
    df_ingresos_rol = df_ingresos_rol.progress_apply(elimina_espacios, axis=0)

    click.echo('Eliminando tildes')
    cols = df_ingresos_rol.select_dtypes(include=["object"]).columns
    df_ingresos_rol[cols] = df_ingresos_rol[cols].progress_apply(elimina_tilde)

    # Transformamos en variables categoricas

    df_ingresos_rol['CORTE'] = df_ingresos_rol['CORTE'].astype('category')

    # Elimina de causas que no sean del tipo ordinaria
    tipo_causa = df_ingresos_rol[df_ingresos_rol['TIPO CAUSA'] != 'Ordinaria']
    df_ingresos_rol.drop(tipo_causa.index, axis=0, inplace=True)

    data.save_feather(df_ingresos_rol, 'clean_IngresosRol')

    click.echo(
        "Generado archivo Feather 'clena_IngresosRol.feather'. Proceso Terminado"
    )
示例#11
0
def create_comunas(path="data/raw/subdere"):
    tqdm.pandas()

    df_provincias = pd.read_excel(f"{path}/provinciasChile.xls")

    # Transformo a mayusculas las columnas de mi interes
    df_provincias['Nombre Región'] = df_provincias['Nombre Región'].str.upper()
    df_provincias['Nombre Provincia'] = df_provincias[
        'Nombre Provincia'].str.upper()
    df_provincias['Nombre Comuna'] = df_provincias['Nombre Comuna'].str.upper()

    click.echo('Eliminando Tildes')
    cols = df_provincias.select_dtypes(include=["object"]).columns
    df_provincias[cols] = df_provincias[cols].progress_apply(
        data.cleandata.elimina_tilde)

    # Acá se debe analiza las comunas que presentar diferentes nombres en los dataset que se estan trabajando,
    # por lo que se procede a unificar la info de comunas con la existente en el Codigo Organico de Tribunales.

    # Cambio nombre provincia para coincidir con otro df

    df_provincias.loc[df_provincias['Nombre Provincia'] == 'ANTARTICA CHILENA',
                      'Nombre Provincia'] = 'LA ANTARTICA CHILENA'
    df_provincias.loc[df_provincias['Nombre Comuna'] == 'COIHAYQUE',
                      'Nombre Comuna'] = 'COIHAIQUE'
    df_provincias.loc[df_provincias['Nombre Comuna'] == 'PAIGUANO',
                      'Nombre Comuna'] = 'PAIHUANO'
    df_provincias.loc[df_provincias['Nombre Comuna'] == 'TILTIL',
                      'Nombre Comuna'] = 'TIL TIL'
    df_provincias.loc[df_provincias['Nombre Comuna'] == 'EL OLIVAR',
                      'Nombre Comuna'] = 'OLIVAR'

    data.save_feather(df_provincias,
                      'generates_Provincias',
                      path='./data/interim/subdere')
    click.echo('Generado archivo Feather. Proceso Terminado')
示例#12
0
def consolidated_rol(path_processed="data/processed/pjud"):
    tqdm.pandas()

    df_ingresos_rol = pd.read_feather(
        f"{path_processed}/processes_IngresosRol.feather")
    df_termino_rol = pd.read_feather(
        f"{path_processed}/processes_TerminosRol.feather")

    df_fulldata_rol = pd.merge(df_ingresos_rol,
                               df_termino_rol,
                               how='outer',
                               on=['COD. TRIBUNAL', 'RIT'])

    columnas_drop = ['index_x', 'index_y', 'MES INGRESO', 'MES TERMINO']
    df_fulldata_rol.drop(columnas_drop, axis='columns', inplace=True)

    click.echo('Transformando data faltante ...')
    df_fulldata_rol = df_fulldata_rol.progress_apply(
        data.transformdata.faltantes_rol, axis=1)

    columnas_drop = [
        'TIPO CAUSA_y', 'TRIBUNAL_y', 'COD. CORTE_y', 'CORTE_y',
        'FECHA INGRESO_y'
    ]
    df_fulldata_rol.drop(columnas_drop, axis='columns', inplace=True)

    df_fulldata_rol.rename(columns={
        'COD. CORTE_x': 'COD. CORTE',
        'CORTE_x': 'CORTE',
        'TRIBUNAL_x': 'TRIBUNAL',
        'TIPO CAUSA_x': 'TIPO CAUSA',
        'MATERIA_x': 'MATERIA',
        'FECHA INGRESO_x': 'FECHA INGRESO'
    },
                           inplace=True)

    causas_top = df_fulldata_rol[df_fulldata_rol['TRIBUNAL'].str.contains(
        'ORAL')]
    causas_garantia = df_fulldata_rol[df_fulldata_rol['TRIBUNAL'].str.contains(
        'GARANTIA')]

    df_rit_cero = df_fulldata_rol[df_fulldata_rol['RIT'].str.startswith("0-")]
    df_fulldata_rol.drop(df_rit_cero.index, axis=0, inplace=True)

    data.save_feather(df_fulldata_rol, 'consolidated_Rol', path_processed)
    data.save_feather(causas_top, 'consolidated_JuicioOralesRol',
                      path_processed)
    data.save_feather(causas_garantia, 'consolidated_CausasGarantiaRol',
                      path_processed)
    click.echo('Generado archivo Feather. Proceso Terminado')
示例#13
0
def consolidated_materia(path_processed="data/processed/pjud"):
    tqdm.pandas()

    df_ingresos_materia = pd.read_feather(
        f"{path_processed}/processes_IngresosMateria.feather")
    df_termino_materia = pd.read_feather(
        f"{path_processed}/processes_TerminosMateria.feather")

    df_fulldata_materia = pd.merge(df_ingresos_materia,
                                   df_termino_materia,
                                   how='outer',
                                   on=['COD. TRIBUNAL', 'RIT', 'COD. MATERIA'])

    columnas_drop = ['index_x', 'index_y', 'MES INGRESO', 'MES TERMINO']
    df_fulldata_materia.drop(columnas_drop, axis='columns', inplace=True)

    click.echo('Transformando data faltante ...')
    df_fulldata_materia = df_fulldata_materia.progress_apply(
        data.transformdata.faltantes_materia, axis=1)

    columnas_drop = [
        'TIPO CAUSA_y', 'MATERIA_y', 'TRIBUNAL_y', 'COD. CORTE_y', 'CORTE_y',
        'FECHA INGRESO_y'
    ]
    df_fulldata_materia.drop(columnas_drop, axis='columns', inplace=True)

    df_fulldata_materia.rename(columns={
        'COD. CORTE_x': 'COD. CORTE',
        'CORTE_x': 'CORTE',
        'TRIBUNAL_x': 'TRIBUNAL',
        'TIPO CAUSA_x': 'TIPO CAUSA',
        'MATERIA_x': 'MATERIA',
        'FECHA INGRESO_x': 'FECHA INGRESO'
    },
                               inplace=True)

    filtro_oral = df_fulldata_materia[
        df_fulldata_materia['TRIBUNAL'].str.contains('ORAL')]
    filtro_garantia = df_fulldata_materia[
        df_fulldata_materia['TRIBUNAL'].str.contains('GARANTIA')]

    data.save_feather(df_fulldata_materia, 'consolidated_Materia',
                      path_processed)
    data.save_feather(filtro_oral, 'consolidated_JuicioOralesMateria',
                      path_processed)
    data.save_feather(filtro_garantia, 'consolidated_CausasGarantiaMateria',
                      path_processed)
    click.echo('Generado archivo Feather. Proceso Terminado')
def processing_data_cortes(path_pjud="data/processed/pjud",
                           path_censo="data/processed/censo"):
    tqdm.pandas()

    df_regiones = pd.read_feather(f"{path_pjud}/processes_TerminosRol.feather")
    df_tribunales = pd.read_feather(
        f"{path_pjud}/generates_ListadoTribunales.feather")
    df_censo = pd.read_feather(f"{path_censo}/generates_Censo2017.feather")

    # Extraigo Cortes de Apelaciones asociadas a Juzgados desde este DataSet

    data_cortes_apelaciones = pd.unique(df_regiones[['CORTE', 'TRIBUNAL'
                                                     ]].values.ravel())
    cortes_tribunales = []

    for datacorte in range(len(data_cortes_apelaciones)):
        if not data_cortes_apelaciones[datacorte].find('C.A.') == -1:
            corte_apelacion = data_cortes_apelaciones[datacorte]
        else:
            datatribunal = data_cortes_apelaciones[datacorte]
            if datatribunal.find("TRIBUNAL") != -1:
                separa_ciudad = datatribunal.split("PENAL ")
            else:
                separa_ciudad = datatribunal.split("GARANTIA ")
            ciudad = separa_ciudad[1]
            cortes_tribunales.append([corte_apelacion, ciudad, datatribunal])

    lista_cortes = []
    poblacion = []

    for trib in df_tribunales.index:
        for indice in range(len(cortes_tribunales)):
            if df_tribunales['TRIBUNAL'][trib] == cortes_tribunales[indice][2]:
                corte = cortes_tribunales[indice][0]
                lista_cortes.append(corte)
                break

        for censo in df_censo.index:
            if df_tribunales['COMUNA'][trib] == df_censo['NOMBRE COMUNA'][
                    censo]:
                censado = df_censo['TOTAL POBLACIÓN EFECTIVAMENTE CENSADA'][
                    censo]
                hombres = df_censo['HOMBRES '][censo]
                mujeres = df_censo['MUJERES'][censo]
                urbana = df_censo['TOTAL ÁREA URBANA'][censo]
                rural = df_censo['TOTAL ÁREA RURAL'][censo]
                poblacion.append([censado, hombres, mujeres, urbana, rural])
                break

    df_tribunales['CORTE'] = lista_cortes

    df_poblacion = pd.DataFrame(
        poblacion,
        columns=['POBLACION', 'HOMBRES', 'MUJERES', 'URBANO', 'RURAL'])
    df_tribunales_poblacion = pd.concat(
        [df_tribunales,
         df_poblacion.reindex(df_tribunales.index)], axis=1)

    # Creo un dataset con informacion de poblacion que abarca cada tribunal !!!
    tribunales = df_tribunales['TRIBUNAL'].unique()
    poblacion_tribunal = []

    for tri in range(len(tribunales)):
        poblacion = 0
        hombres = 0
        mujeres = 0
        urbana = 0
        rural = 0
        comunas = []
        for ind in df_tribunales_poblacion.index:
            if tribunales[tri] == df_tribunales_poblacion['TRIBUNAL'][ind]:
                region = df_tribunales_poblacion['REGION'][ind]
                corte = df_tribunales_poblacion['CORTE'][ind]
                tribunal = df_tribunales_poblacion['TRIBUNAL'][ind]
                poblacion = int(
                    df_tribunales_poblacion['POBLACION'][ind]) + poblacion
                hombres = int(
                    df_tribunales_poblacion['HOMBRES'][ind]) + hombres
                mujeres = int(
                    df_tribunales_poblacion['MUJERES'][ind]) + mujeres
                urbana = int(df_tribunales_poblacion['URBANO'][ind]) + urbana
                rural = int(df_tribunales_poblacion['RURAL'][ind]) + rural
                comunas.append(df_tribunales_poblacion['COMUNA'][ind])

        poblacion_tribunal.append([
            region, corte, tribunal, poblacion, hombres, mujeres, urbana,
            rural, comunas
        ])

    columnas = [
        'REGION', 'CORTE', 'TRIBUNAL', 'POBLACION', 'HOMBRES', 'MUJERES',
        'URBANO', 'RURAL', 'COMUNAS'
    ]
    df_poblacion_jurisdiccion = pd.DataFrame(poblacion_tribunal,
                                             columns=columnas)

    # Agregare data de cantidad de jueces a esta Data y Asientio de cada Tribunal.

    dotacion = []
    for i in df_poblacion_jurisdiccion.index:
        for t in df_tribunales.index:
            if df_poblacion_jurisdiccion['TRIBUNAL'][i] == df_tribunales[
                    'TRIBUNAL'][t]:
                jueces = df_tribunales['JUECES'][t]
                asiento = df_tribunales['ASIENTO'][t]
                tipo = df_tribunales['TIPO JUZGADO'][t]
                row = [jueces, asiento, tipo]
                dotacion.append(row)
                break

    columnas = ['JUECES', 'ASIENTO', 'TIPO JUZGADO']
    df_anexo = pd.DataFrame(dotacion, columns=columnas)

    df_poblacion_jurisdiccion = pd.concat(
        [df_poblacion_jurisdiccion, df_anexo], axis=1)

    path_processed = "data/processed/pjud"
    data.save_feather(df_tribunales, "processes_ListadoTribunalesyCortes",
                      path_processed)
    data.save_feather(df_tribunales_poblacion,
                      "processes_DataConsolidada_Poblacion_Tribunales",
                      path_processed)
    data.save_feather(df_poblacion_jurisdiccion,
                      "processes_DataConsolidada_Poblacion_Jurisdiccion",
                      path_processed)
    click.echo('Generado archivo Feather. Proceso Terminado')
def carga_limpieza_terminos_materia():
    df_termino_materia = load_concatenate_by_filename(
        'Términos por Materia Penal')

    df_metge = df_termino_materia[df_termino_materia['SISTEMA'] == 'METGE']
    df_termino_materia.drop(df_metge.index, axis=0, inplace=True)

    # Estandarización de nombres de variables

    df_termino_materia.rename(columns={
        'CÓD. CORTE': 'COD. CORTE',
        'CÓD. TRIBUNAL': 'COD. TRIBUNAL',
        'CÓD. MATERIA': 'COD. MATERIA',
        'MOTIVO DE TÉRMINO': 'MOTIVO TERMINO',
        'DURACIÓN CAUSA': 'DURACION CAUSA',
        'FECHA TÉRMINO': 'FECHA TERMINO',
        'MES TÉRMINO': 'MES TERMINO',
        'AÑO TÉRMINO': 'AÑO TERMINO',
        'TOTAL TÉRMINOS': 'TOTAL TERMINOS'
    },
                              inplace=True)

    df_termino_materia.drop(['N°', 'SISTEMA'], axis='columns', inplace=True)

    # TRANSFORMAMOS DE FLOAT A INTEGER

    df_termino_materia['COD. CORTE'] = df_termino_materia['COD. CORTE'].fillna(
        0).astype(np.int16)
    df_termino_materia['COD. TRIBUNAL'] = df_termino_materia[
        'COD. TRIBUNAL'].fillna(0).astype(np.int16)
    df_termino_materia['COD. MATERIA'] = df_termino_materia[
        'COD. MATERIA'].fillna(0).astype(np.int16)
    df_termino_materia['DURACION CAUSA'] = df_termino_materia[
        'DURACION CAUSA'].fillna(0).astype(np.int16)
    df_termino_materia['AÑO TERMINO'] = df_termino_materia[
        'AÑO TERMINO'].fillna(0).astype(np.int16)
    df_termino_materia['TOTAL TERMINOS'] = df_termino_materia[
        'TOTAL TERMINOS'].fillna(0).astype(np.int8)

    # Transformamos formato fecha

    click.echo('Convirtiendo fechas')
    df_termino_materia['FECHA INGRESO'] = df_termino_materia[
        'FECHA INGRESO'].progress_apply(convierte_fecha)
    df_termino_materia['FECHA TERMINO'] = df_termino_materia[
        'FECHA TERMINO'].progress_apply(convierte_fecha)

    # Elimino espacios en las columnas tipo objetos

    click.echo('Eliminando espacios')
    df_termino_materia = df_termino_materia.progress_apply(elimina_espacios,
                                                           axis=0)

    # Elimino tildes de object

    click.echo('Eliminando tilde')
    cols = df_termino_materia.select_dtypes(include=["object"]).columns
    df_termino_materia[cols] = df_termino_materia[cols].progress_apply(
        elimina_tilde)

    # Limpieza de RIT
    click.echo('Limpieza de RIT')
    df_termino_materia['RIT'] = df_termino_materia['RIT'].progress_apply(
        limpia_rit)

    # Categorizar variables

    df_termino_materia['CORTE'] = df_termino_materia['CORTE'].astype(
        'category')
    df_termino_materia['MOTIVO TERMINO'] = df_termino_materia[
        'MOTIVO TERMINO'].astype('category')

    #Dejo solo causas Ordinarias

    tipo_causa = df_termino_materia[
        df_termino_materia['TIPO CAUSA'] != 'Ordinaria']
    df_termino_materia.drop(tipo_causa.index, axis=0, inplace=True)

    # Reset el index para realizar feather

    data.save_feather(df_termino_materia, 'clean_TerminosMateria')

    click.echo(
        "Generado archivo Feather 'clean_TerminosMateria.feather'. Proceso Terminado"
    )
def carga_limpieza_ingresos_materia():
    df_ingresos_materia = load_concatenate_by_filename(
        'Ingresos por Materia Penal')

    df_ingresos_materia['TOTAL INGRESOS POR MATERIAS'] = df_ingresos_materia[
        'TOTAL INGRESOS POR MATERIAS'].fillna(
            df_ingresos_materia['TOTAL INGRESOS POR MATERIAS(*)'])
    df_ingresos_materia.drop(['N°', 'TOTAL INGRESOS POR MATERIAS(*)'],
                             axis='columns',
                             inplace=True)

    df_ingresos_materia.drop([
        '(*)Se agregó columna total de ingresos, dado que en algunas causas, la materia se repite (error de tramitación)'
    ],
                             axis='columns',
                             inplace=True)

    # TRANSFORMAMOS DE FLOAT A INTEGER

    df_ingresos_materia['COD. CORTE'] = df_ingresos_materia[
        'COD. CORTE'].fillna(0).astype(np.int16)
    df_ingresos_materia['COD. TRIBUNAL'] = df_ingresos_materia[
        'COD. TRIBUNAL'].fillna(0).astype(np.int16)
    df_ingresos_materia['COD. MATERIA'] = df_ingresos_materia[
        'COD. MATERIA'].fillna(0).astype(np.int16)
    df_ingresos_materia['AÑO INGRESO'] = df_ingresos_materia[
        'AÑO INGRESO'].fillna(0).astype(np.int16)
    df_ingresos_materia['TOTAL INGRESOS POR MATERIAS'] = df_ingresos_materia[
        'TOTAL INGRESOS POR MATERIAS'].fillna(0).astype(np.int8)

    # Transformamos fechas
    click.echo('Transformando fechas')

    df_ingresos_materia['FECHA INGRESO'] = df_ingresos_materia[
        'FECHA INGRESO'].progress_apply(convierte_fecha)

    # Elimino espacios en las columnas tipo objetos
    click.echo('Eliminando espacios en objetos')

    df_ingresos_materia = df_ingresos_materia.progress_apply(elimina_espacios,
                                                             axis=0)

    # Elimino tildes

    click.echo('Eliminando tildes')

    cols = df_ingresos_materia.select_dtypes(include=["object"]).columns
    df_ingresos_materia[cols] = df_ingresos_materia[cols].progress_apply(
        elimina_tilde)

    # Categorizacion

    df_ingresos_materia['CORTE'] = df_ingresos_materia['CORTE'].astype(
        'category')

    tipo_causa = df_ingresos_materia[
        df_ingresos_materia['TIPO CAUSA'] != 'Ordinaria']

    df_ingresos_materia.drop(tipo_causa.index, axis=0, inplace=True)

    data.save_feather(df_ingresos_materia, 'clean_IngresosMateria')

    click.echo(
        "Generado archivo Feather 'clean_IngresosMateria.feather'. Proceso Terminado"
    )
    top = df_tribunal_oral[[
        'REGION', 'TRIBUNAL', 'ASIENTO', 'COMUNA', 'JUECES', 'TIPO JUZGADO'
    ]]
    jg = df_juzgados_penales[[
        'REGION', 'TRIBUNAL', 'ASIENTO', 'COMUNA', 'JUECES', 'TIPO JUZGADO'
    ]]

    df_listado_tribunales = pd.concat([top, jg], join="inner")

    click.echo('Tranformación ... Cambiando Nombres')
    df_tribunal_oral['TRIBUNAL'] = df_tribunal_oral['TRIBUNAL'].progress_apply(
        data.cleandata.cambio_nombre_juzgados)
    df_juzgados_penales['TRIBUNAL'] = df_juzgados_penales[
        'TRIBUNAL'].progress_apply(data.cleandata.cambio_nombre_juzgados)
    df_listado_tribunales['TRIBUNAL'] = df_listado_tribunales[
        'TRIBUNAL'].progress_apply(data.cleandata.cambio_nombre_juzgados)

    data.save_feather(df_provincias,
                      'generates_DataRegiones',
                      path='data/processed/subdere')
    data.save_feather(df_listado_tribunales,
                      'generates_ListadoTribunales',
                      path='data/processed/pjud')
    data.save_feather(df_tribunal_oral,
                      'generates_TribunalesOrales',
                      path='data/processed/pjud')
    data.save_feather(df_juzgados_penales,
                      'generates_JuzgadosPenales',
                      path='data/processed/pjud')
    click.echo('Generado archivo Feather. Proceso Terminado')
def carga_limpieza_delitos():
    tqdm.pandas()
    path_raw = "data/raw/delitos"
    codigos_delitos = pd.read_excel(f"{path_raw}/codigos_penal_2020.xlsx",
                                    sheet_name="codigos vigentes",
                                    engine='openpyxl')

    # elimino filas con NaN
    codigos_delitos = codigos_delitos.drop_duplicates()
    # elimino 2 primeras filas que son titulos
    codigos_delitos = codigos_delitos.drop([0, 1, 2], axis=0)

    # elimino columnas con datos NaN

    variables = range(2, 248)
    columnas = []

    for variable in variables:
        columnas.append("Unnamed: " + str(variable))

    codigos_delitos = codigos_delitos.drop(columns=columnas, axis=1)

    # cambio nombres columnas
    codigos_delitos = codigos_delitos.rename(columns={
        'VERSION AL 01/01/2018': 'COD. MATERIA',
        'Unnamed: 1': 'MATERIA'
    })

    delitos_vigentes = []

    for item in codigos_delitos.index:
        if str(codigos_delitos['COD. MATERIA'][item]).isupper():
            tipologia_delito = str(codigos_delitos['COD. MATERIA'][item])
        else:
            delitos_vigentes.append([
                codigos_delitos['COD. MATERIA'][item],
                str(codigos_delitos['MATERIA'][item]).upper().rstrip(),
                tipologia_delito, 'VIGENTE'
            ])

    df_delitos_vigentes = pd.DataFrame(delitos_vigentes,
                                       columns=[
                                           'COD. MATERIA', 'MATERIA',
                                           'TIPOLOGIA MATERIA',
                                           'VIGENCIA MATERIA'
                                       ])

    click.echo('Elimino tildes de las columnas object')

    cols = df_delitos_vigentes.select_dtypes(include=["object"]).columns
    df_delitos_vigentes[cols] = df_delitos_vigentes[cols].progress_apply(
        elimina_tilde)
    df_delitos_vigentes[cols] = df_delitos_vigentes[cols].progress_apply(
        limpieza_caracteres)

    df_delitos_vigentes['COD. MATERIA'] = df_delitos_vigentes[
        'COD. MATERIA'].fillna(0).astype('int16')

    # CARGA Y LIMPIEZA DE DATOS RELACIONADOS A DELITOS NO VIGENTES
    codigos_delitos_novigentes = pd.read_excel(
        f"{path_raw}/codigos_penal_2020.xlsx",
        sheet_name="Codigos no vigentes",
        engine='openpyxl')

    # cambio nombres columnas

    codigos_delitos_novigentes = codigos_delitos_novigentes.rename(
        columns={
            'MATERIAS PENALES NO VIGENTES': 'TIPOLOGIA MATERIA',
            'Unnamed: 1': 'COD. MATERIA',
            'Unnamed: 2': 'MATERIA'
        })
    # elimino primera fila que son titulos
    codigos_delitos_novigentes = codigos_delitos_novigentes.drop([0], axis=0)
    # reemplazo Nan por ST
    codigos_delitos_novigentes = codigos_delitos_novigentes.fillna('ST')

    delitos_no_vigentes = []
    for item in codigos_delitos_novigentes.index:

        tipologia_delito = codigos_delitos_novigentes['TIPOLOGIA MATERIA'][
            item]

        if tipologia_delito != 'ST':
            tipologia = codigos_delitos_novigentes['TIPOLOGIA MATERIA'][item]
        else:
            tipologia_delito = tipologia

        delitos_no_vigentes.append([
            codigos_delitos_novigentes['COD. MATERIA'][item],
            codigos_delitos_novigentes['MATERIA'][item].rstrip(),
            tipologia_delito, 'NO VIGENTE'
        ])

    df_delitos_no_vigentes = pd.DataFrame(delitos_no_vigentes,
                                          columns=[
                                              'COD. MATERIA', 'MATERIA',
                                              'TIPOLOGIA MATERIA',
                                              'VIGENCIA MATERIA'
                                          ])

    click.echo('Elimino tildes de las columnas object')

    cols = df_delitos_no_vigentes.select_dtypes(include=["object"]).columns
    df_delitos_no_vigentes[cols] = df_delitos_no_vigentes[cols].progress_apply(
        elimina_tilde)

    df_delitos_no_vigentes['COD. MATERIA'] = df_delitos_no_vigentes[
        'COD. MATERIA'].astype('int16')

    # UNION DE AMBOS DATASET CON DELITOS VIGENTES Y NO VIGENTES
    df_delitos = pd.concat([df_delitos_vigentes, df_delitos_no_vigentes])

    data.save_feather(df_delitos,
                      'clean_Delitos',
                      path='data/processed/delitos')
    click.echo(
        "Generado archivo Feather 'clean_Delitos.feather'. Proceso Terminado")
def carga_limpieza_duraciones():
    df_duraciones = load_concatenate_by_filename('Duraciones por Rol Penal')

    # Elimino causas que no sean SIAGJ
    df_no_siagj = df_duraciones[df_duraciones['SISTEMA'] != 'SIAGJ']
    df_duraciones.drop(df_no_siagj.index, axis=0, inplace=True)

    df_duraciones.rename(columns={
        'CÓD. CORTE': 'COD. CORTE',
        'CÓD. TRIBUNAL': 'COD. TRIBUNAL',
        'DURACIÓN CAUSA ': 'DURACIÓN CAUSA',
        'FECHA TÉRMINO': 'FECHA TERMINO',
        'MOTIVO DE TÉRMINO': 'MOTIVO TERMINO',
        'MES TÉRMINO': 'MES TERMINO',
        'AÑO TÉRMINO': 'AÑO TERMINO',
        'TOTAL TÉRMINOS': 'TOTAL TERMINOS'
    },
                         inplace=True)

    df_duraciones.drop(['N°', 'SISTEMA'], axis='columns', inplace=True)
    df_duraciones = df_duraciones.dropna()

    # TRANSFORMAMOS DE FLOAT A INTEGER

    df_duraciones['COD. CORTE'] = df_duraciones['COD. CORTE'].fillna(0).astype(
        np.int16)
    df_duraciones['COD. TRIBUNAL'] = df_duraciones['COD. TRIBUNAL'].fillna(
        0).astype(np.int16)
    df_duraciones['AÑO TERMINO'] = df_duraciones['AÑO TERMINO'].fillna(
        0).astype(np.int16)
    df_duraciones['TOTAL TERMINOS'] = df_duraciones['TOTAL TERMINOS'].fillna(
        0).astype(np.int8)

    click.echo('Transformamos fechas')

    df_duraciones['FECHA INGRESO'] = df_duraciones[
        'FECHA INGRESO'].progress_apply(convierte_fecha)
    df_duraciones['FECHA TERMINO'] = df_duraciones[
        'FECHA TERMINO'].progress_apply(convierte_fecha)

    click.echo('Elimino espacios en las columnas tipo objetos')

    df_duraciones = df_duraciones.progress_apply(elimina_espacios, axis=0)

    click.echo('Elimino tildes')
    cols = df_duraciones.select_dtypes(include=["object"]).columns
    df_duraciones[cols] = df_duraciones[cols].progress_apply(elimina_tilde)

    click.echo('Transformar el formato del RIT--AÑO a RIT-AÑO')
    df_duraciones['RIT'] = df_duraciones['RIT'].progress_apply(limpia_rit)

    # Categorizacion

    df_duraciones['CORTE'] = df_duraciones['CORTE'].astype('category')
    df_duraciones['MOTIVO TERMINO'] = df_duraciones['MOTIVO TERMINO'].astype(
        'category')

    # Dejo solo causas Ordinarias
    tipo_causa = df_duraciones[df_duraciones['TIPO CAUSA'] != 'Ordinaria']
    df_duraciones.drop(tipo_causa.index, axis=0, inplace=True)

    data.save_feather(df_duraciones, 'clean_Duraciones')
    click.echo(
        "Generado archivo Feather 'clean_Duraciones.feather'. Proceso Terminado"
    )
示例#20
0
def consolidated_fulldata_audiencias(path_processed="data/processed/pjud"):
    tqdm.pandas()

    df_audiencias = pd.read_feather(
        f"{path_processed}/processes_Audiencias.feather")
    df_poblacion = pd.read_feather(
        f"{path_processed}/processes_DataConsolidada_Poblacion_Jurisdiccion.feather"
    )

    df_audiencias['TRIBUNAL-RIT'] = df_audiencias['COD. TRIBUNAL'].map(
        str) + "-" + df_audiencias['RIT'].map(str)

    df_audiencias['AÑO INGRESO'] = df_audiencias['RIT'].progress_apply(
        data.cleandata.obtiene_año)

    columnas_duplicadas = ['level_0', 'index']
    df_audiencias.drop(columnas_duplicadas, axis='columns', inplace=True)

    df_fulldataaudiencias = pd.merge(df_audiencias,
                                     df_poblacion,
                                     how='left',
                                     on=['CORTE', 'TRIBUNAL'])

    columnas_duplicadas = ['index']
    df_fulldataaudiencias.drop(columnas_duplicadas,
                               axis='columns',
                               inplace=True)

    df_fulldataaudiencias.rename(columns={
        'COD. CORTE': 'cod_corte',
        'COD. TRIBUNAL': 'cod_tribunal',
        'RIT': 'rit',
        'CORTE': 'corte',
        'TRIBUNAL': 'tribunal',
        'TIPO CAUSA': 'tipo_causa',
        'TIPO DE AUDIENCIA': 'tipo_audiencia',
        'FECHA PROGRAMACION AUDIENCIA': 'fecha_programacion_audiencia',
        'FECHA AUDIENCIA': 'fecha_audiencia',
        'DIAS AGENDAMIENTO': 'dias_agendamiento',
        'DURACION AUDIENCIA (MIN)': 'duracion_audiencia_minutos',
        'TOTAL AUDIENCIAS': 'total_audiencias',
        'TRIBUNAL-RIT': 'tribunal_rit',
        'AÑO INGRESO': 'año_ingreso',
        'REGION': 'region',
        'POBLACION': 'poblacion',
        'HOMBRES': 'hombres',
        'MUJERES': 'mujeres',
        'URBANO': 'urbano',
        'RURAL': 'rural',
        'COMUNAS': 'comunas',
        'JUECES': 'dotacion_jueces',
        'ASIENTO': 'asiento',
        'TIPO JUZGADO': 'tipo_juzgado'
    },
                                 inplace=True)

    df_fulldataaudiencias = df_fulldataaudiencias[[
        'region', 'cod_corte', 'corte', 'tribunal_rit', 'cod_tribunal', 'rit',
        'tribunal', 'tipo_juzgado', 'dotacion_jueces', 'tipo_causa',
        'año_ingreso', 'tipo_audiencia', 'fecha_programacion_audiencia',
        'fecha_audiencia', 'dias_agendamiento', 'duracion_audiencia_minutos',
        'total_audiencias', 'asiento', 'comunas', 'poblacion', 'hombres',
        'mujeres', 'urbano', 'rural'
    ]]

    data.save_feather(df_fulldataaudiencias,
                      'consolidated_FullData_Audiencias', path_processed)
    click.echo('Generado archivo Feather. Proceso Terminado')
示例#21
0
def consolidated_fulldata_duracion(path_processed="data/processed/pjud"):
    tqdm.pandas()

    df_duracion = pd.read_feather(
        f"{path_processed}/processes_Duraciones.feather")
    df_poblacion = pd.read_feather(
        f"{path_processed}/processes_DataConsolidada_Poblacion_Jurisdiccion.feather"
    )

    df_duracion['TRIBUNAL-RIT'] = df_duracion['COD. TRIBUNAL'].map(
        str) + "-" + df_duracion['RIT'].map(str)

    df_duracion['AÑO INGRESO'] = df_duracion['RIT'].progress_apply(
        data.cleandata.obtiene_año)
    columnas_duplicadas = ['index']
    df_duracion.drop(columnas_duplicadas, axis='columns', inplace=True)

    df_fulldataduracion = pd.merge(df_duracion,
                                   df_poblacion,
                                   how='left',
                                   on=['CORTE', 'TRIBUNAL'])

    columnas_duplicadas = ['index']
    df_fulldataduracion.drop(columnas_duplicadas, axis='columns', inplace=True)

    df_fulldataduracion.rename(columns={
        'COD. CORTE': 'cod_corte',
        'COD. TRIBUNAL': 'cod_tribunal',
        'RIT': 'rit',
        'CORTE': 'corte',
        'TRIBUNAL': 'tribunal',
        'TIPO CAUSA': 'tipo_causa',
        'FECHA INGRESO': 'fecha_ingreso',
        'AÑO INGRESO': 'año_ingreso',
        'FECHA TERMINO': 'fecha_termino',
        'MES TERMINO': 'mes_termino',
        'AÑO TERMINO': 'año_termino',
        'TOTAL TERMINOS': 'total_terminos',
        'DURACIÓN CAUSA': 'duracion_causa',
        'TRIBUNAL-RIT': 'tribunal_rit',
        'MOTIVO TERMINO': 'motivo_termino',
        'REGION': 'region',
        'POBLACION': 'poblacion',
        'HOMBRES': 'hombres',
        'MUJERES': 'mujeres',
        'URBANO': 'urbano',
        'RURAL': 'rural',
        'COMUNAS': 'comunas',
        'JUECES': 'dotacion_jueces',
        'ASIENTO': 'asiento',
        'TIPO JUZGADO': 'tipo_juzgado'
    },
                               inplace=True)
    df_fulldataduracion = df_fulldataduracion[[
        'region', 'cod_corte', 'corte', 'tribunal_rit', 'cod_tribunal', 'rit',
        'tribunal', 'tipo_juzgado', 'dotacion_jueces', 'tipo_causa',
        'año_ingreso', 'fecha_ingreso', 'año_termino', 'mes_termino',
        'fecha_termino', 'motivo_termino', 'total_terminos', 'duracion_causa',
        'asiento', 'comunas', 'poblacion', 'hombres', 'mujeres', 'urbano',
        'rural'
    ]]

    data.save_feather(df_fulldataduracion, 'consolidated_FullData_Duracion',
                      path_processed)
    click.echo('Generado archivo Feather. Proceso Terminado')
示例#22
0
def consolidated_fulldata_causa(path_processed="data/processed/pjud"):
    tqdm.pandas()
    path_delitos = 'data/processed/delitos'

    df_causas = pd.read_feather(
        f"{path_processed}/consolidated_Materia_Rol.feather")
    df_tipologia = pd.read_feather(f"{path_delitos}/clean_Delitos.feather")
    df_poblacion = pd.read_feather(
        f"{path_processed}/processes_DataConsolidada_Poblacion_Jurisdiccion.feather"
    )
    # Unificar RIT y Tribunal en una sola columna para evitar mala interpretacion de causas
    df_causas['TRIBUNAL-RIT'] = df_causas['COD. TRIBUNAL'].map(
        str) + "-" + df_causas['RIT'].map(str)

    # Carga Data relacionada a Tipologia de delitos
    df_causa_tipologia = pd.merge(df_causas,
                                  df_tipologia,
                                  how='left',
                                  on=['COD. MATERIA'])

    columnas_duplicadas = ['index_x', 'MATERIA_x', 'index_y']
    df_causa_tipologia.drop(columnas_duplicadas, axis='columns', inplace=True)

    df_causa_tipologia.rename(columns={'MATERIA_y': 'MATERIA'}, inplace=True)

    # Carga Data relacionada a Poblacion

    df_fulldatacausa = pd.merge(df_causa_tipologia,
                                df_poblacion,
                                how='left',
                                on=['CORTE', 'TRIBUNAL'])

    columnas_duplicadas = ['index']
    df_fulldatacausa.drop(columnas_duplicadas, axis='columns', inplace=True)

    # Reordenando Nombres de las columnas ...
    df_fulldatacausa.rename(columns={
        'COD. CORTE': 'cod_corte',
        'COD. TRIBUNAL': 'cod_tribunal',
        'RIT': 'rit',
        'COD. MATERIA': 'cod_materia',
        'TOTAL INGRESOS POR MATERIAS': 'total_ingresos_materia',
        'FECHA INGRESO': 'fecha_ingreso',
        'AÑO INGRESO': 'año_ingreso',
        'FECHA TERMINO': 'fecha_termino',
        'DURACION CAUSA': 'duracion_causa',
        'MOTIVO TERMINO': 'motivo_termino',
        'AÑO TERMINO': 'año_termino',
        'TOTAL TERMINOS': 'total_terminos',
        'CORTE': 'corte',
        'TRIBUNAL': 'tribunal',
        'TIPO CAUSA': 'tipo_causa',
        'TRIBUNAL-RIT': 'tribunal_rit',
        'MATERIA': 'materia',
        'TIPOLOGIA MATERIA': 'tipologia_materia',
        'VIGENCIA MATERIA': 'vigencia_materia',
        'REGION': 'region',
        'POBLACION': 'poblacion',
        'HOMBRES': 'hombres',
        'MUJERES': 'mujeres',
        'URBANO': 'urbano',
        'RURAL': 'rural',
        'COMUNAS': 'comunas',
        'JUECES': 'dotacion_jueces',
        'ASIENTO': 'asiento',
        'TIPO JUZGADO': 'tipo_juzgado'
    },
                            inplace=True)

    df_fulldatacausa = df_fulldatacausa[[
        'region', 'cod_corte', 'corte', 'tribunal_rit', 'cod_tribunal', 'rit',
        'tribunal', 'tipo_juzgado', 'dotacion_jueces', 'tipo_causa',
        'fecha_ingreso', 'año_ingreso', 'cod_materia', 'materia',
        'tipologia_materia', 'vigencia_materia', 'total_ingresos_materia',
        'total_terminos', 'fecha_termino', 'año_termino', 'duracion_causa',
        'motivo_termino', 'asiento', 'comunas', 'poblacion', 'hombres',
        'mujeres', 'urbano', 'rural'
    ]]

    data.save_feather(df_fulldatacausa, 'consolidated_FullData_Causa',
                      path_processed)
    click.echo('Generado archivo Feather. Proceso Terminado')
def carga_limpieza_terminos_rol():
    df_termino_rol = load_concatenate_by_filename('Términos por Rol Penal')

    # Elimino causas que no sean SIAGJ
    df_no_siagj = df_termino_rol[df_termino_rol['SISTEMA'] != 'SIAGJ']
    df_termino_rol.drop(df_no_siagj.index, axis=0, inplace=True)

    # Elimino filas vacias o con datos NaN
    df_termino_rol = df_termino_rol.dropna()
    df_termino_rol.drop(['N°', 'SISTEMA'], axis='columns', inplace=True)

    # Cambio de nombre a algunas columnas para dejarlas iguales a otros dataframes

    df_termino_rol.rename(columns={
        'CÓD. CORTE': 'COD. CORTE',
        'CÓD. TRIBUNAL': 'COD. TRIBUNAL',
        'DURACIÓN CAUSA ': 'DURACION CAUSA',
        'MOTIVO DE TÉRMINO': 'MOTIVO TERMINO',
        'FECHA TÉRMINO': 'FECHA TERMINO',
        'MES TÉRMINO': 'MES TERMINO',
        'AÑO TÉRMINO': 'AÑO TERMINO',
        'TOTAL TÉRMINOS': 'TOTAL TERMINOS'
    },
                          inplace=True)
    # Transformamos variables float64 a int16

    df_termino_rol['COD. CORTE'] = df_termino_rol['COD. CORTE'].fillna(
        0).astype(np.int16)
    df_termino_rol['COD. TRIBUNAL'] = df_termino_rol['COD. TRIBUNAL'].fillna(
        0).astype(np.int16)
    df_termino_rol['DURACION CAUSA'] = df_termino_rol['DURACION CAUSA'].fillna(
        0).astype(np.int16)
    df_termino_rol['AÑO TERMINO'] = df_termino_rol['AÑO TERMINO'].fillna(
        0).astype(np.int16)
    df_termino_rol['TOTAL TERMINOS'] = df_termino_rol['TOTAL TERMINOS'].fillna(
        0).astype(np.int8)

    click.echo('Elimino tildes de las columnas object')
    cols = df_termino_rol.select_dtypes(include=["object"]).columns
    df_termino_rol[cols] = df_termino_rol[cols].progress_apply(elimina_tilde)

    click.echo('Transformando fechas')
    df_termino_rol['FECHA INGRESO'] = df_termino_rol[
        'FECHA INGRESO'].progress_apply(convierte_fecha)
    df_termino_rol['FECHA TERMINO'] = df_termino_rol[
        'FECHA TERMINO'].progress_apply(convierte_fecha)

    click.echo('Elimino espacios en las columnas tipo objeto')
    df_termino_rol = df_termino_rol.progress_apply(elimina_espacios, axis=0)

    click.echo('Limpieza de RIT')
    df_termino_rol['RIT'] = df_termino_rol['RIT'].progress_apply(limpia_rit)

    # Transformamos en variables categoricas

    df_termino_rol['CORTE'] = df_termino_rol['CORTE'].astype('category')
    df_termino_rol['MOTIVO TERMINO'] = df_termino_rol['MOTIVO TERMINO'].astype(
        'category')

    # Dejo solo causas Ordinarias
    tipo_causa = df_termino_rol[df_termino_rol['TIPO CAUSA'] != 'Ordinaria']
    df_termino_rol.drop(tipo_causa.index, axis=0, inplace=True)

    data.save_feather(df_termino_rol, 'clean_TerminosRol')

    click.echo(
        "Generado archivo Feather clean_TerminosRol.feather'. Proceso Terminado"
    )
示例#24
0
def consolidated_fulldata_inventario(path_processed="data/processed/pjud"):
    tqdm.pandas()
    path = "data/processed/delitos"

    df_inventario = pd.read_feather(
        f"{path_processed}/processes_Inventario.feather")
    df_tipologia = pd.read_feather(f"{path}/clean_Delitos.feather")
    df_poblacion = pd.read_feather(
        f"{path_processed}/processes_DataConsolidada_Poblacion_Jurisdiccion.feather"
    )

    df_inventario['TRIBUNAL-RIT'] = df_inventario['COD. TRIBUNAL'].map(
        str) + "-" + df_inventario['RIT'].map(str)
    df_inventario['AÑO INGRESO'] = df_inventario['RIT'].progress_apply(
        data.cleandata.obtiene_año)

    columnas_duplicadas = ['index']
    df_inventario.drop(columnas_duplicadas, axis='columns', inplace=True)

    df_inventario_tipologia = pd.merge(df_inventario,
                                       df_tipologia,
                                       how='left',
                                       on=['COD. MATERIA'])
    columnas_duplicadas = ['index', 'MATERIA_x']
    df_inventario_tipologia.drop(columnas_duplicadas,
                                 axis='columns',
                                 inplace=True)

    df_inventario_tipologia.rename(columns={'MATERIA_y': 'MATERIA'},
                                   inplace=True)

    df_fulldatainventario = pd.merge(df_inventario_tipologia,
                                     df_poblacion,
                                     how='left',
                                     on=['CORTE', 'TRIBUNAL'])

    columnas_duplicadas = ['index']
    df_fulldatainventario.drop(columnas_duplicadas,
                               axis='columns',
                               inplace=True)

    df_fulldatainventario.rename(columns={
        'COD. CORTE': 'cod_corte',
        'COD. TRIBUNAL': 'cod_tribunal',
        'RIT': 'rit',
        'CORTE': 'corte',
        'TRIBUNAL': 'tribunal',
        'COMPETENCIA': 'competencia',
        'TIPO CAUSA': 'tipo_causa',
        'COD. MATERIA': 'cod_materia',
        'TIPO ULT. DILIGENCIA': 'tipo_ultima_diligencia',
        'FECHA ULT. DILIGENCIA': 'fecha_ultima_diligencia',
        'FECHA INGRESO': 'fecha_ingreso',
        'AÑO INGRESO': 'año_ingreso',
        'TOTAL INVENTARIO': 'total_inventario',
        'TRIBUNAL-RIT': 'tribunal_rit',
        'MATERIA': 'materia',
        'TIPOLOGIA MATERIA': 'tipologia_materia',
        'VIGENCIA MATERIA': 'vigencia_materia',
        'REGION': 'region',
        'POBLACION': 'poblacion',
        'HOMBRES': 'hombres',
        'MUJERES': 'mujeres',
        'URBANO': 'urbano',
        'RURAL': 'rural',
        'COMUNAS': 'comunas',
        'JUECES': 'dotacion_jueces',
        'ASIENTO': 'asiento',
        'TIPO JUZGADO': 'tipo_juzgado'
    },
                                 inplace=True)

    df_fulldatainventario = df_fulldatainventario[[
        'region', 'cod_corte', 'corte', 'tribunal_rit', 'cod_tribunal', 'rit',
        'tribunal', 'competencia', 'tipo_juzgado', 'dotacion_jueces',
        'tipo_causa', 'año_ingreso', 'fecha_ingreso', 'cod_materia', 'materia',
        'tipologia_materia', 'vigencia_materia', 'tipo_ultima_diligencia',
        'fecha_ultima_diligencia', 'total_inventario', 'asiento', 'comunas',
        'poblacion', 'hombres', 'mujeres', 'urbano', 'rural'
    ]]

    data.save_feather(df_fulldatainventario,
                      'consolidated_FullData_Inventario', path_processed)
    click.echo('Generado archivo Feather. Proceso Terminado')
def carga_limpieza_inventario():
    df_inventario = load_concatenate_by_filename(
        'Inventario Causas en Tramitación Penal')

    # Elimino registros de METGE
    df_metge = df_inventario[df_inventario['SISTEMA'] == 'METGE']
    df_inventario.drop(df_metge.index, axis=0, inplace=True)

    # ESTANDARIZACION DE NOMBRES DE VARIABLES

    df_inventario.rename(columns={
        'CÓDIGO CORTE': 'COD. CORTE',
        'CÓDIGO TRIBUNAL': 'COD. TRIBUNAL',
        'CÓDIGO MATERIA': 'COD. MATERIA',
        ' MATERIA': 'MATERIA'
    },
                         inplace=True)

    df_inventario.drop(['SISTEMA'], axis='columns', inplace=True)

    # TRANSFORMAMOS DE FLOAT A INTEGER

    df_inventario['COD. CORTE'] = df_inventario['COD. CORTE'].fillna(0).astype(
        np.int16)
    df_inventario['COD. TRIBUNAL'] = df_inventario['COD. TRIBUNAL'].fillna(
        0).astype(np.int16)
    df_inventario['COD. MATERIA'] = df_inventario['COD. MATERIA'].fillna(
        0).astype(np.int16)
    df_inventario['TOTAL INVENTARIO'] = df_inventario[
        'TOTAL INVENTARIO'].fillna(0).astype(np.int8)

    click.echo('Transformamos fechas')
    df_inventario['FECHA INGRESO'] = df_inventario[
        'FECHA INGRESO'].progress_apply(convierte_fecha)
    df_inventario['FECHA ULT. DILIGENCIA'] = df_inventario[
        'FECHA ULT. DILIGENCIA'].progress_apply(convierte_fecha)

    click.echo('Elimino espacios en las columnas tipo objetos')
    df_inventario = df_inventario.progress_apply(elimina_espacios, axis=0)

    click.echo('Elimino tildes de las columnas object')
    cols = df_inventario.select_dtypes(include=["object"]).columns
    df_inventario[cols] = df_inventario[cols].progress_apply(elimina_tilde)

    # CATEGORIZACION DE VARIABLES

    df_inventario['CORTE'] = df_inventario['CORTE'].astype('category')
    df_inventario['COMPETENCIA'] = df_inventario['COMPETENCIA'].astype(
        'category')
    df_inventario['TIPO ULT. DILIGENCIA'] = df_inventario[
        'TIPO ULT. DILIGENCIA'].astype('category')

    # Dejo solo causas Ordinarias
    tipo_causa = df_inventario[df_inventario['TIPO CAUSA'] != 'Ordinaria']
    df_inventario.drop(tipo_causa.index, axis=0, inplace=True)

    data.save_feather(df_inventario, 'clean_Inventario')

    click.echo(
        "Generado archivo Feather 'clean_Inventario.feather'. Proceso Terminado"
    )
def carga_limpieza_audiencias():
    df_audiencias = load_concatenate_by_filename('Audiencias Realizadas Penal')

    df_audiencias.rename(columns={
        'CÓD. CORTE':
        'COD. CORTE',
        'CÓD. TRIBUNAL':
        'COD. TRIBUNAL',
        'DURACIÓN  AUDIENCIA':
        'DURACION AUDIENCIA',
        'AGENDAMIENTO (DÍAS CORRIDOS)':
        'DIAS AGENDAMIENTO',
        'DURACIÓN AUDIENCIA (MINUTOS)':
        'DURACION AUDIENCIA (MIN)',
        'FECHA PROGRAMACIÓN AUDIENCIA':
        'FECHA PROGRAMACION AUDIENCIA'
    },
                         inplace=True)

    # TRANSFORMAMOS DE FLOAT A INTEGER

    df_audiencias['COD. CORTE'] = df_audiencias['COD. CORTE'].fillna(0).astype(
        np.int16)
    df_audiencias['COD. TRIBUNAL'] = df_audiencias['COD. TRIBUNAL'].fillna(
        0).astype(np.int16)
    df_audiencias['TOTAL AUDIENCIAS'] = df_audiencias[
        'TOTAL AUDIENCIAS'].fillna(0).astype(np.int8)

    # Podemos observar que existen columnas que se repiten, y que tienen datos NAN en algunas pero esos datos
    # en otras columnas, pasa en TIPO AUDIENCIA=TIPO DE AUDIENCIA, AGENDAMIENTO (DÍAS CORRIDOS)=PLAZO AGENDAMIENTO
    # (DÍAS CORRIDOS), DURACIÓN AUDIENCIA (MINUTOS)= DURACIÓN AUDIENCIA

    df_audiencias['TIPO DE AUDIENCIA'] = df_audiencias[
        'TIPO DE AUDIENCIA'].fillna(df_audiencias['TIPO AUDIENCIA'])
    df_audiencias['DIAS AGENDAMIENTO'] = df_audiencias[
        'DIAS AGENDAMIENTO'].fillna(
            df_audiencias['PLAZO AGENDAMIENTO (DIAS CORRIDOS)']).astype(
                np.int16)
    df_audiencias['DURACION AUDIENCIA (MIN)'] = df_audiencias[
        'DURACION AUDIENCIA (MIN)'].fillna(df_audiencias['DURACION AUDIENCIA'])

    # Elimino las columnas reemplazadas

    df_audiencias.drop([
        'TIPO AUDIENCIA', 'PLAZO AGENDAMIENTO (DIAS CORRIDOS)',
        'DURACION AUDIENCIA'
    ],
                       axis='columns',
                       inplace=True)

    click.echo('Transformamos fechas')

    df_audiencias['FECHA PROGRAMACION AUDIENCIA'] = df_audiencias[
        'FECHA PROGRAMACION AUDIENCIA'].progress_apply(convierte_fecha)
    df_audiencias['FECHA AUDIENCIA'] = df_audiencias[
        'FECHA AUDIENCIA'].progress_apply(convierte_fecha)

    click.echo('Elimino espacios en las columnas tipo objetos')

    df_audiencias = df_audiencias.progress_apply(elimina_espacios, axis=0)

    click.echo('Elimino tildes')
    cols = df_audiencias.select_dtypes(include=["object"]).columns
    df_audiencias[cols] = df_audiencias[cols].progress_apply(elimina_tilde)

    # Categorizar

    df_audiencias['CORTE'] = df_audiencias['CORTE'].astype('category')

    # Dejo solo causas Ordinarias
    tipo_causa = df_audiencias[df_audiencias['TIPO CAUSA'] != 'Ordinaria']
    df_audiencias.drop(tipo_causa.index, axis=0, inplace=True)

    data.save_feather(df_audiencias, 'clean_Audiencias')

    click.echo(
        "Generado archivo Feather 'clean_Audiencias.feather'. Proceso Terminado"
    )
def processing_materia(path_interim="data/interim/pjud"):
    tqdm.pandas()

    df_ingresos_materia = pd.read_feather(
        f"{path_interim}/clean_IngresosMateria.feather")
    df_termino_materia = pd.read_feather(
        f"{path_interim}/clean_TerminosMateria.feather")

    click.echo('Normalizando nombres ...')

    df_ingresos_materia['TRIBUNAL'] = df_ingresos_materia[
        'TRIBUNAL'].progress_apply(data.cleandata.cambio_nombre_juzgados)
    df_termino_materia['TRIBUNAL'] = df_termino_materia[
        'TRIBUNAL'].progress_apply(data.cleandata.cambio_nombre_juzgados)

    # CODIGOS no encontrados [13001, -31075, 0, 4011, 4014, 4013, 4010]

    # Caso Codigo 13001 -> LESIONES LEVES
    # Este codigo debe tratarse como 13036 identificado como: LESIONES LEVES 494 Nº 5 CÓDIGO PENAL
    df_ingresos_materia['COD. MATERIA'] = df_ingresos_materia[
        'COD. MATERIA'].replace(13001, 13036)
    df_termino_materia['COD. MATERIA'] = df_termino_materia[
        'COD. MATERIA'].replace(13001, 13036)

    # Caso Codigo -31075
    filtro_codigo_31075 = df_ingresos_materia[
        df_ingresos_materia['COD. MATERIA'] == -31075]
    df_ingresos_materia.drop(filtro_codigo_31075.index, axis=0, inplace=True)

    filtro_codigo_31075 = df_termino_materia[df_termino_materia['COD. MATERIA']
                                             == 31075]
    df_termino_materia.drop(filtro_codigo_31075.index, axis=0, inplace=True)

    # Caso Codigo 0
    filtro_codigo_0 = df_ingresos_materia[df_ingresos_materia['COD. MATERIA']
                                          == 0]
    df_ingresos_materia.drop(filtro_codigo_0.index, axis=0, inplace=True)

    filtro_codigo_0 = df_termino_materia[df_termino_materia['COD. MATERIA'] ==
                                         0]
    df_termino_materia.drop(filtro_codigo_0.index, axis=0, inplace=True)

    # Codigos 4011, 4014, 4013, 4010
    # codigos No vigentes, mal cargados en sistemas

    filtro_codigo_4011 = df_ingresos_materia[
        df_ingresos_materia['COD. MATERIA'] == 4011]
    filtro_codigo_4014 = df_ingresos_materia[
        df_ingresos_materia['COD. MATERIA'] == 4014]
    filtro_codigo_4013 = df_ingresos_materia[
        df_ingresos_materia['COD. MATERIA'] == 4013]
    filtro_codigo_4010 = df_ingresos_materia[
        df_ingresos_materia['COD. MATERIA'] == 4010]

    df_ingresos_materia.drop(filtro_codigo_4011.index, axis=0, inplace=True)
    df_ingresos_materia.drop(filtro_codigo_4014.index, axis=0, inplace=True)
    df_ingresos_materia.drop(filtro_codigo_4013.index, axis=0, inplace=True)
    df_ingresos_materia.drop(filtro_codigo_4010.index, axis=0, inplace=True)

    filtro_codigo_4007 = df_termino_materia[df_termino_materia['COD. MATERIA']
                                            == 4007]
    filtro_codigo_4011 = df_termino_materia[df_termino_materia['COD. MATERIA']
                                            == 4011]
    filtro_codigo_4014 = df_termino_materia[df_termino_materia['COD. MATERIA']
                                            == 4014]
    filtro_codigo_4013 = df_termino_materia[df_termino_materia['COD. MATERIA']
                                            == 4013]
    filtro_codigo_4010 = df_termino_materia[df_termino_materia['COD. MATERIA']
                                            == 4010]

    df_termino_materia.drop(filtro_codigo_4011.index, axis=0, inplace=True)
    df_termino_materia.drop(filtro_codigo_4014.index, axis=0, inplace=True)
    df_termino_materia.drop(filtro_codigo_4013.index, axis=0, inplace=True)
    df_termino_materia.drop(filtro_codigo_4010.index, axis=0, inplace=True)
    df_termino_materia.drop(filtro_codigo_4007.index, axis=0, inplace=True)

    pd.to_datetime(df_termino_materia['FECHA INGRESO'])
    pd.to_datetime(df_termino_materia['FECHA TERMINO'])

    # Elimino las filas con valores nulos
    filtro_null = df_termino_materia[
        df_termino_materia['FECHA INGRESO'].isnull()]
    df_termino_materia.drop(filtro_null.index, axis=0, inplace=True)

    # Verifico las causas con Fecha Ingreso anterior a 01-01-2015
    filtro_fechas = df_termino_materia[
        df_termino_materia['FECHA INGRESO'] <= '2014-12-31']
    df_termino_materia.drop(filtro_fechas.index, axis=0, inplace=True)

    click.echo('Procesando Error en Fechas ...')
    df_termino_materia = df_termino_materia.progress_apply(
        data.transformdata.fechas_cambiadas, axis=1)

    path_processed = "data/processed/pjud"
    data.save_feather(df_ingresos_materia, 'processes_IngresosMateria',
                      path_processed)
    data.save_feather(df_termino_materia, 'processes_TerminosMateria',
                      path_processed)
    click.echo('Generado archivo Feather. Proceso Terminado')