R Markdown
rm(list = ls())
import pandas as pd
# Cargar la base de datos desde el archivo Excel usando pandas
file_path = r'D:/OneDrive/VMGWconsultoria/basejubilados.xlsx'
df = pd.read_excel(file_path, sheet_name='Base JyP 20mil')
# Imprimir los nobres de los campos
print("Nombres de los campos en la base de datos:")
## Nombres de los campos en la base de datos:
print(df.columns)
## Index(['anio', 'mes', 'sexo', 'cod_asignacion', 'jubpen', 'tipojubilacion',
## 'regimen', 'edad', 'fecha_ing', 'mov_asignado_mensual', 'anio_ingreso',
## 'n_id', 'fecha_nac', 'estadocivil', 'dias_rec', 'mes_rec', 'anios_rec',
## 'gs_1haber', 'gs_lhaber', 'fecha_1haber', 'fecha_lhaber', 'sector1',
## 'genero_mgc', 'fnac_mgc', '_merge_mgc'],
## dtype='object')
# Crear el nuevo campo sector1_imput basado en las reglas especificadas
# Crear el nuevo campo llaveidsector concatenando n_id y sector1_imput
df['llaveidtipojubregimen'] = df['tipojubilacion'] + df['regimen']+ df['n_id'].astype(str)
# Crear el nuevo campo periodo concatenando anio y mes
df['periodo'] = df['anio'].astype(str) + '-' + df['mes'].astype(str).str.zfill(2)
# Primero eliminar duplicados en df
# Realizar el reshape de la base de datos
df_pivot = df.pivot_table(index='llaveidtipojubregimen', columns='periodo', values='mov_asignado_mensual', aggfunc='sum', fill_value=0)
print("Primeras filas del DataFrame pivot:")
## Primeras filas del DataFrame pivot:
print(df_pivot.head())
## periodo 2019-01 ... 2023-12
## llaveidtipojubregimen ...
## JUBILACIÓN EXTRAORDINARIAADMINISTRACIÓN PÚBLICA... 0 ... 4173356
## JUBILACIÓN EXTRAORDINARIAADMINISTRACIÓN PÚBLICA... 1338170 ... 1623126
## JUBILACIÓN EXTRAORDINARIAADMINISTRACIÓN PÚBLICA... 1164648 ... 0
## JUBILACIÓN EXTRAORDINARIAADMINISTRACIÓN PÚBLICA... 0 ... 6718200
## JUBILACIÓN EXTRAORDINARIAADMINISTRACIÓN PÚBLICA... 0 ... 3523699
##
## [5 rows x 60 columns]
# pasar periodo a formato fecha
#oredenar las columnas por fecha mas reciente a mas antigua
df_pivot = df_pivot.reindex(sorted(df_pivot.columns), axis=1)
# Reset index para facilitar el merge
df_pivot = df_pivot.reset_index()
# Reset index para facilitar el merge
# Ordenar las columnas df_pivot por llaveidtipojubregimen y sector1_imput (de z a a)
df_pivot_sorted = df_pivot.sort_values(by=['llaveidtipojubregimen'], ascending=[True])
# Añadir de vuelta todas las columnas iniciales de la base df a df_pivot
# Ordenar las columnas df_pivot por la llave llaveidtipojubregimen y el campo sector1 de modo que el valor del campo sector1 se ordene de z a a
# Ordenar las columnas df_pivot por llaveidtipojubregimen y sector1_imput (de z a a)
df_sort = df.sort_values(by=['n_id','regimen', 'tipojubilacion', 'sector1'], ascending=[True,True,True, False])
df_desdup = df_sort.drop_duplicates(subset=['llaveidtipojubregimen'])
# Ordenar las columnas df_pivot por llaveidtipojubregimen
df_desdup = df_desdup.sort_values(by=['llaveidtipojubregimen'])
# Realizar el merge asegurando que solo se traen las columnas necesarias y evitando duplicación
columns_to_merge = ['llaveidtipojubregimen'] + df_pivot.columns.tolist()[1:]
df_pivot_completo = df_desdup.merge(df_pivot_sorted[columns_to_merge], on='llaveidtipojubregimen', how='left')
## si sector1 esta en blanco completar con elvalor del campo regimen
df_pivot_completo['sector1'] = df_pivot_completo['sector1'].fillna(df_pivot_completo['regimen'])
#guardar en excel los resultados
#df_pivot_completo.to_excel(r'D:/OneDrive/VMGWconsultoria/df_pivot_completo.xlsx', index = False)
# carga libreria pra prestnacion de tabla interactiva en html
library(DT)
## Warning: package 'DT' was built under R version 4.3.3
library(readxl)
## Warning: package 'readxl' was built under R version 4.3.3
# Cargar la base de datos desde el archivo Excel usando pandas
df_pivot_completo <- read_excel("D:/OneDrive/VMGWconsultoria/df_pivot_completo.xlsx")
# Imprimir los nobres de los campos
print("Nombres de los campos en la base de datos:")
## [1] "Nombres de los campos en la base de datos:"
print(names(df_pivot_completo))
## [1] "anio" "mes" "sexo"
## [4] "cod_asignacion" "jubpen" "tipojubilacion"
## [7] "regimen" "edad" "fecha_ing"
## [10] "mov_asignado_mensual" "anio_ingreso" "n_id"
## [13] "fecha_nac" "estadocivil" "dias_rec"
## [16] "mes_rec" "anios_rec" "gs_1haber"
## [19] "gs_lhaber" "fecha_1haber" "fecha_lhaber"
## [22] "sector1" "genero_mgc" "fnac_mgc"
## [25] "_merge_mgc" "llaveidtipojubregimen" "periodo"
## [28] "2019-01" "2019-02" "2019-03"
## [31] "2019-04" "2019-05" "2019-06"
## [34] "2019-07" "2019-08" "2019-09"
## [37] "2019-10" "2019-11" "2019-12"
## [40] "2020-01" "2020-02" "2020-03"
## [43] "2020-04" "2020-05" "2020-06"
## [46] "2020-07" "2020-08" "2020-09"
## [49] "2020-10" "2020-11" "2020-12"
## [52] "2021-01" "2021-02" "2021-03"
## [55] "2021-04" "2021-05" "2021-06"
## [58] "2021-07" "2021-08" "2021-09"
## [61] "2021-10" "2021-11" "2021-12"
## [64] "2022-01" "2022-02" "2022-03"
## [67] "2022-04" "2022-05" "2022-06"
## [70] "2022-07" "2022-08" "2022-09"
## [73] "2022-10" "2022-11" "2022-12"
## [76] "2023-01" "2023-02" "2023-03"
## [79] "2023-04" "2023-05" "2023-06"
## [82] "2023-07" "2023-08" "2023-09"
## [85] "2023-10" "2023-11" "2023-12"
datatable(df_pivot_completo, options = list(pageLength = 5))