def universo1(df, poblacionColumna, ruta, archivoResultado, hojaResultado): """ primer analisis del universo: beneficiarios alcanzados por el programa degún población :param df: dataframe a analizar :param poblacionColumna: columna del dataframe que se utilizara para hacer los agrupamientos :param ruta: ruta donde se guardaran los resultados :param archivoResultado: archivo donde se guarda el resultado del analisis :param hojaResultado: nombre de la hoja donde se guarda el resultado del analisis :return: void """ df1 = df.groupby(poblacionColumna).CLAVE_BENEFICIARIO.nunique() excel.salvarDataframe(ruta, archivoResultado, hojaResultado, df1)
def universo2(df, poblacionColumna, ruta, archivoResultado, hojaResultado): """ segundo analisis del universo: cantidad promedio de prestaciones por beneficiario según población :param df: dataframe a analizar :param poblacionColumna: columna del dataframe que se utilizara para hacer agrupamientos :param ruta: ruta donde se guardaran los resultados :param archivoResultado: archivo donde se guarda el resultado del analisis :param hojaResultado: nombre de la hoja donde se guarda el resultado del analisis :return: void """ df1 = df.groupby(poblacionColumna).CLAVE_BENEFICIARIO.nunique() df2 = df.groupby(poblacionColumna).CODIGO_PRESTACION.count() df3 = pd.concat([df1, df2], axis=1) df3["PROMEDIO"] = df3["CODIGO_PRESTACION"] / df3["CLAVE_BENEFICIARIO"] excel.salvarDataframe(ruta, archivoResultado, hojaResultado, df3)
def interes2(df, poblacionColumna, ruta, archivoResultado, hojaResultado): """ segundo analisis por prestación de interes: tasa de uso según población por prestación de interés :param df: dataframe a analizar :param poblacionColumna: columna del dataframe que se utilizara para hacer agrupamientos :param ruta: ruta donde se guardan los resultados :param archivoResultado: archivo donde se guarda el resultado del analisis :param hojaResultado: nombre de la hoja donde se guarda el resultado del analisis :return: void """ df1 = df.groupby(["CODIGO_PRESTACION", poblacionColumna]).CLAVE_BENEFICIARIO.count() df2 = df.groupby(["CODIGO_PRESTACION", poblacionColumna]).CODIGO_PRESTACION.count() df3 = pd.concat([df1, df2], axis=1) df3["PROMEDIO"] = df3["CODIGO_PRESTACION"] / df3["CLAVE_BENEFICIARIO"] df3.to_csv(ruta + "auxiliar1" + ".csv") df3 = pd.read_csv(ruta + "auxiliar1" + ".csv", encoding="ISO-8859-1", dtype={"CLAVE_BENEFICIARIO": str}) excel.salvarDataframe(ruta, archivoResultado, hojaResultado, df3)
def universo4(df, poblacionColumna, ruta, archivoResultado, hojaResultado): """ cuarto analisis del universo: distribucion de beneficiarios que consumieron prestaciones pro código de prestación y distribucion de veces que se consumió cada código de prestación :param df: dataframe a analizar :param poblacionColumna: columna del dataframe que se utilizara para hacer agrupamientos :param ruta: ruta donse se guardan los resultados :param archivoResultado: archivo donde se guarda el resultado del analisis :param hojaResultado: nombre de la hoja donde se guarda el resultado del analisis :return: void """ df1 = df.groupby(poblacionColumna).CODIGO_PRESTACION.value_counts() df2 = df.groupby([poblacionColumna, "CODIGO_PRESTACION"]).CLAVE_BENEFICIARIO.nunique() df3 = pd.concat([df1, df2], axis=1) df3.to_csv(ruta + "auxiliar1" + ".csv") df3 = pd.read_csv(ruta + "auxiliar1" + ".csv", encoding="ISO-8859-1", dtype={"CLAVE_BENEFICIARIO": str}) excel.salvarDataframe(ruta, archivoResultado, hojaResultado, df3)
def interes1(df, poblacionColumna, ruta, archivoResultado, hojaResultado): """ primer analisis por prestacion de interes: proporción de beneficiarios que hicieron uso de la prestación :param df: dataframe a analizar :param poblacionColumna: columna del dataframe que se utilizara para hacer agrupamientos :param ruta: ruta donde se guardan los resultados :param archivoResultado: archivo donde se guarda el resultado del analisis :param hojaResultado: nombre de la hoja donde se guarda el resultado del analisis :return: void """ df2 = df.groupby(["CODIGO_PRESTACION", poblacionColumna]).CLAVE_BENEFICIARIO.nunique() df3 = df.groupby(["CODIGO_PRESTACION", poblacionColumna]).CODIGO_PRESTACION.count() df4 = pd.concat([df2, df3], axis=1) df4.columns = ["CANTIDAD_BENEFICIARIOS", "CANTIDAD_PRESTACIONES"] df4["POBLACION_TOTAL"] = df4["CANTIDAD_BENEFICIARIOS"] * df4["CANTIDAD_PRESTACIONES"] df4["PROPORCION"] = df4["CANTIDAD_PRESTACIONES"] / df4["CANTIDAD_BENEFICIARIOS"] df4["PROPORCION2"] = df4["CANTIDAD_PRESTACIONES"] / df4["POBLACION_TOTAL"] df4.to_csv(ruta + "auxiliar1" + ".csv") df4 = pd.read_csv(ruta + "auxiliar1" + ".csv", encoding="ISO-8859-1", dtype={"CLAVE_BENEFICIARIO": str}) excel.salvarDataframe(ruta, archivoResultado, hojaResultado, df4)
def interes3(df, poblacionColumna, ruta, archivoResultado, hojaResultado): """ tercer analisis por prestación de interés: distribución del consumo de la prestación de interés :param df: dataframe a analizar :param ruta: ruta donde se guardan los resultados :param archivoResultado: archivo donde se guarda el resultado del analisis :param hojaResultado: nombre de la hoja donde se guarda el resultado del analisis :return: void """ # agrupo por clave y cuento los codigos, guardo en un .csv y lo leo. Esto es para poder volver a agruparlo (puede que haya # una mejor manera de hacerlo) df1 = df.groupby([poblacionColumna, "CLAVE_BENEFICIARIO"]).CODIGO_PRESTACION.count() df1.to_csv(ruta + "auxiliar1" + ".csv") df1 = pd.read_csv(ruta + "auxiliar1" + ".csv", encoding="ISO-8859-1", names=["CATEGORIA_POBLACION", "CLAVE_BENEFICIARIO", "REPETICIONES"], dtype={"CLAVE_BENEFICIARIO": str}) # agrupo por cantidad de repeticiones y guardo el archivo df1 = df1.groupby([poblacionColumna, "REPETICIONES"]).CLAVE_BENEFICIARIO.count() df1.to_csv(ruta + "auxiliar1" + ".csv") df1 = pd.read_csv(ruta + "auxiliar1" + ".csv", encoding="ISO-8859-1", names=["REPETICIONES", "CUENTA_CLAVE"]) df1["TOTAL_PRESTACIONES"] = df1["REPETICIONES"] * df1["CUENTA_CLAVE"] excel.salvarDataframe(ruta, archivoResultado, hojaResultado, df1)