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')
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')
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" )
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')
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')
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" )
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')
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')
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" )
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')