# Librerias
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['figure.dpi']= 100
import time
import csv
#Funcion para generar un ideal de representación
def df_ideal(df_total, lista, N):
df_filtrado = df_total[df_total.index.isin(lista)]
df_filtrado['Número Ideal'] = (df_filtrado['PORCENTAJE_total'])*N*2/100
return df_filtrado
#Plot de una serie de pandas
def df_plot_horizontal(serie, title, xlabel, ylabel, n_categories, interger=None, doble_label=None, size=None):
if size:
fig, ax = plt.subplots(figsize=size)
else:
fig, ax = plt.subplots()
serie.head(n_categories).plot(ax=ax, kind='barh').invert_yaxis()
ax.set_title(title)
ax.set_xlabel(xlabel)
ax.set_ylabel(ylabel)
rects = ax.patches
i = 0
# For each bar: Place a label
for rect in rects:
# Get X and Y placement of label from rect.
x_value = rect.get_width()
y_value = rect.get_y() + rect.get_height() / 2
# Number of points between bar and label. Change to your liking.
space = 5
# Vertical alignment for positive values
ha = 'left'
# If value of bar is negative: Place label left of bar
if x_value < 0:
# Invert space to place label to the left
space *= -1
# Horizontally align label at right
ha = 'right'
# Use X value as label and format number with one decimal place
if interger:
label = "{0}".format(x_value)
elif doble_label:
if float(x_value) > 0:
label = "+{:.1f} | A:{} - I:{:.1f}".format(x_value, doble_label[0][i], doble_label[1][i])
else:
label = "{:.1f} | A:{} - I:{:.1f}".format(x_value, doble_label[0][i], doble_label[1][i])
else:
label = "{:.1f}".format(x_value)
# Create annotation
plt.annotate(
label, # Use `label` as label
(x_value, y_value), # Place label at end of the bar
xytext=(space, 0), # Horizontally shift label by `space`
textcoords="offset points", # Interpret `xytext` as offset in points
va='center', # Vertically center label
ha=ha) # Horizontally align label differently for
# positive and negative values.
Vamos a identificar todos los apellidos mapuches basado en los datos de Painemal (2011) y Amigo y Bustos (2008).
#Lectura
df_mapuches = pd.read_csv('Apellidos/apellidos_mapuches.csv', encoding = "ISO-8859-1")
df_aymaras = pd.read_excel('Apellidos/apellidos_aymaras.xlsx', index_col=0, engine="openpyxl")
df_atacameños = pd.read_excel('Apellidos/apellidos_atacameños.xlsx', index_col=0, engine='openpyxl')
#Filtramos por aquellos determinados por Painemal y Amigo+Bustos
df_mapuches_painemal = df_mapuches[df_mapuches['painemal'] == 'Si']
df_mapuches_amigos = df_mapuches[df_mapuches['amigobustos'] == 'Si']
#Lista con apellidos
apellidos_mapuches_painemal = df_mapuches_painemal['apellido'].unique().tolist()
apellidos_mapuches_amigos = df_mapuches_amigos['apellido'].unique().tolist()
apellidos_aymaras = [aymara.upper() for aymara in list(df_aymaras.index)]
apellidos_atacameños = [atacameño.upper() for atacameño in list(df_atacameños.index)]
Fuente: http://www.laizquierdadiario.cl/IMG/jpg/fafa8ffd-3884-44f2-ba77-f214a4a00759.jpg
apellidos_prestigio = ['MATTE','DELANO','ZEGERS','SOFFIA','RISOPATRON','TASSARA','EDWARDS','PARGA','ERRAZURIZ',
'PUELMA','CANESSA','VIAL','SOLER','ARIZTIA','ASTABURUAGA','CAMPBELL','MOORE','ALLIENDE',
'SOLARI','WALKER','KLEIN','PARODI','BUNSTER','HITSCHFELD','MOLLER','IRRARAZAVAL','WERNER',
'ETCHEVERRY','BALTRA','MANZUR','PEIRANO','TAGLE','LYON','NIKLITSCHEK','ENRIQUEZ','UNDURRAGA',
'LARRA','MONTT','VICUÑA','SCHMIDT','RICHARDS','OTERO','PETERSEN','HOTT','DIEZ','PONS',
'GARRETON','ECHENIQUE','NEUMANN','LARRAÍN']
apellidos_palestinos = ['Awad', 'Jadue', 'Hasbun', 'Manzur', 'Nazar', 'Ananias', 'Alamo', 'Zaror', 'Haddad',
'Hirmas']
apellidos_palestinos = [apellido.upper() for apellido in apellidos_palestinos]
apellidos_romani = ['Nicolich', 'Savich', 'Aristich', 'Pantich', 'Arestich', 'California', 'Caldera', 'Aristides',
'Ilich']
apellidos_romani = [apellido.upper() for apellido in apellidos_romani]
apellidos_asiatico = ['Lee', 'Kim', 'Park', 'Choi', 'Chung', 'Hong', 'Chen', 'Yang', 'Sung', 'Jung']
apellidos_asiatico = [apellido.upper() for apellido in apellidos_asiatico]
apellidos_judios = ['Ergas', 'Errazuriz', 'Aspillaga', 'Camhi', 'Cohen', 'Irarrazaval', 'Schmidt', 'Ventura',
'Laso', 'Court']
apellidos_judios = [apellido.upper() for apellido in apellidos_judios]
apellidos_mixtos = ['Martorell', 'Espinace', 'Feliu', 'Hadad', 'Hahn', 'Neyra', 'Contador', 'Heresmann', 'Raveau',
'Solari']
apellidos_mixtos = [apellido.upper() for apellido in apellidos_mixtos]
apellidos_aristocratas = ['Edwards', 'Zañartu', 'Monckeberg', 'Lyon', 'Alessandri', 'Subercaseaux', 'Besa', 'Braun',
'Mackenna', 'Vial']
apellidos_aristocratas = [apellido.upper() for apellido in apellidos_aristocratas]
apellidos_mixtos_aristocratas = ['Reuque', 'Becker', 'Bassi', 'Mezzano', 'Leniz', 'Lopetegui', 'Zevallos', 'Soler',
'Astorquiza', 'Bas']
apellidos_mixtos_aristocratas = [apellido.upper() for apellido in apellidos_mixtos_aristocratas]
Se analizará las frecuencias nacional de los apellidos materno, paternos y en conjunto. A partir de los datos del Registro Civil.
Estos son los grandes datasets de la investigación. Están separados por que el tamaño de la operación sería muy grande.
df_paternos = pd.read_excel('Apellidos/apellidos_paternos.xlsx', index_col=0, usecols = 'A:D',engine="openpyxl")
df_maternos = pd.read_excel('Apellidos/apellidos_maternos.xlsx', index_col=0, usecols = 'A:D',engine="openpyxl")
df_adp = pd.read_csv('ADP.csv')
df_contrata = pd.read_csv('Febrero2020/PersonalContrata.csv', index_col=0)
df_codigotrabajo = pd.read_csv('Febrero2020/PersonalCodigotrabajo.csv', index_col=0)
df_honorarios = pd.read_csv('Febrero2020/PersonalHonorarios.csv', index_col=0)
df_instituciones = pd.read_csv('Acronimos Organismos.csv', index_col=0, encoding="ISO-8859-1", delimiter =';')
#Remove tildes
cols = df_paternos.select_dtypes(include=[np.object]).columns
df_paternos[cols] =df_paternos[cols].apply(lambda x: x.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8'))
cols = df_maternos.select_dtypes(include=[np.object]).columns
df_maternos[cols] =df_maternos[cols].apply(lambda x: x.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8'))
cols = df_adp.select_dtypes(include=[np.object]).columns
df_adp[cols] =df_adp[cols].apply(lambda x: x.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8'))
cols = df_contrata.select_dtypes(include=[np.object]).columns
df_contrata[cols] =df_contrata[cols].apply(lambda x: x.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8'))
cols = df_codigotrabajo.select_dtypes(include=[np.object]).columns
df_codigotrabajo[cols] =df_codigotrabajo[cols].apply(lambda x: x.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8'))
cols = df_honorarios.select_dtypes(include=[np.object]).columns
df_honorarios[cols] =df_honorarios[cols].apply(lambda x: x.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8'))
#Tomar aquellos con una frecuencia mayor a 2 personas
pd.options.display.float_format = '{:,.2f}'.format
df_paternos['AP PATERNO'] = df_paternos['AP PATERNO'].str.upper()
df_paternos_region = df_paternos[df_paternos['AP PATERNO'].notna()]
df_paternos_region = df_paternos_region.groupby(['REG','AP PATERNO']).agg({'CANTIDAD': "sum"}).sort_values(by=['CANTIDAD'], ascending=False)
df_paternos_region = df_paternos_region[df_paternos_region['CANTIDAD'] > 1]
df_paternos_region['CANTIDAD'] = df_paternos_region['CANTIDAD'].astype(int)
df_paternos_region
CANTIDAD | ||
---|---|---|
REG | AP PATERNO | |
13.00 | GONZALEZ | 172857 |
MUNOZ | 119926 | |
DIAZ | 90809 | |
ROJAS | 86148 | |
PEREZ | 71250 | |
... | ... | ... |
5.00 | BURATOVIC | 2 |
10.00 | FELLAY | 2 |
13.00 | POMEROY | 2 |
10.00 | ENDRUSSAT | 2 |
FONCHZIK | 2 |
148415 rows × 1 columns
pd.options.display.float_format = '{:,.2f}'.format
df_paternos_total = df_paternos_region.groupby(['AP PATERNO']).agg({'CANTIDAD': "sum"}).sort_values(by=['CANTIDAD'], ascending=False)
df_paternos_total['PORCENTAJE'] = (df_paternos_total['CANTIDAD']/df_paternos_total['CANTIDAD'].sum())*100
df_paternos_total['CANTIDAD'] = df_paternos_total['CANTIDAD'].astype(int)
df_paternos_total = df_paternos_total.dropna()
df_paternos_total = df_paternos_total[df_paternos_total['CANTIDAD'] > 1]
df_paternos_total.head(20)
CANTIDAD | PORCENTAJE | |
---|---|---|
AP PATERNO | ||
GONZALEZ | 444542 | 2.09 |
MUNOZ | 349675 | 1.64 |
ROJAS | 249660 | 1.17 |
DIAZ | 246901 | 1.16 |
PEREZ | 196733 | 0.92 |
SOTO | 177160 | 0.83 |
CONTRERAS | 167004 | 0.78 |
SILVA | 157327 | 0.74 |
SEPULVEDA | 153280 | 0.72 |
MARTINEZ | 152469 | 0.72 |
MORALES | 149660 | 0.70 |
RODRIGUEZ | 147724 | 0.69 |
LOPEZ | 145039 | 0.68 |
FUENTES | 139022 | 0.65 |
TORRES | 137342 | 0.65 |
HERNANDEZ | 137195 | 0.64 |
ARAYA | 136972 | 0.64 |
FLORES | 133056 | 0.63 |
CASTILLO | 131137 | 0.62 |
ESPINOZA | 130596 | 0.61 |
#Tomar aquellos con una frecuencia mayor a 2 personas
df_maternos['AP MATERNO'] = df_maternos['AP MATERNO'].str.upper()
df_maternos_region = df_maternos[df_maternos['AP MATERNO'].notna()]
df_maternos_region = df_maternos_region.groupby(['REG','AP MATERNO']).agg({'CANTIDAD': "sum"}).sort_values(by=['CANTIDAD'], ascending=False)
df_maternos_region = df_maternos_region[df_maternos_region['CANTIDAD'] > 1]
df_maternos_region['CANTIDAD'] = df_maternos_region['CANTIDAD'].astype(int)
df_maternos_region
CANTIDAD | ||
---|---|---|
REG | AP MATERNO | |
13 | GONZALEZ | 175593 |
MUNOZ | 121770 | |
DIAZ | 91220 | |
ROJAS | 87695 | |
PEREZ | 70665 | |
... | ... | ... |
6 | BOREA | 2 |
5 | NAIF | 2 |
9 | GENNARI | 2 |
13 | NOSE | 2 |
10 | SURET | 2 |
154647 rows × 1 columns
#Lectura de apellidos maternos
pd.options.display.float_format = '{:,.2f}'.format
df_maternos_total = df_maternos_region.groupby(['AP MATERNO']).agg({'CANTIDAD': "sum"}).sort_values(by=['CANTIDAD'], ascending=False)
df_maternos_total['PORCENTAJE'] = (df_maternos_total['CANTIDAD']/df_maternos_total['CANTIDAD'].sum())*100
df_maternos_total['CANTIDAD'] = df_maternos_total['CANTIDAD'].astype(int)
df_maternos_total = df_maternos_total.dropna()
df_maternos_total.head(20)
CANTIDAD | PORCENTAJE | |
---|---|---|
AP MATERNO | ||
GONZALEZ | 445732 | 2.11 |
MUNOZ | 352369 | 1.67 |
ROJAS | 250676 | 1.19 |
DIAZ | 247930 | 1.17 |
PEREZ | 195150 | 0.92 |
SOTO | 181587 | 0.86 |
CONTRERAS | 168545 | 0.80 |
SILVA | 156106 | 0.74 |
MARTINEZ | 151808 | 0.72 |
SEPULVEDA | 151655 | 0.72 |
MORALES | 150683 | 0.71 |
RODRIGUEZ | 146016 | 0.69 |
LOPEZ | 143394 | 0.68 |
FUENTES | 137971 | 0.65 |
HERNANDEZ | 136944 | 0.65 |
ARAYA | 136681 | 0.65 |
TORRES | 136549 | 0.65 |
FLORES | 136435 | 0.65 |
CASTILLO | 130741 | 0.62 |
ESPINOZA | 130118 | 0.62 |
#Lectura de apellidos en conjunto
df_conjunto = pd.merge(df_maternos_total, df_paternos_total, left_index=True, right_index=True, how='inner')
df_conjunto['CANTIDAD_total'] = df_conjunto['CANTIDAD_x'] + df_conjunto['CANTIDAD_y']
df_conjunto['PORCENTAJE_total'] = (df_conjunto['CANTIDAD_total']/df_conjunto['CANTIDAD_total'].sum())*100
df_conjunto['CANTIDAD_total'] = df_conjunto['CANTIDAD_total'].astype(int)
df_conjunto[['CANTIDAD_total','PORCENTAJE_total']].head(20)
%store df_conjunto
Stored 'df_conjunto' (DataFrame)
n_paterno = '* Apellido Paternos {} \n'.format(int(df_paternos['CANTIDAD'].sum()))
n_materno = '* Apellido Maternos {} '.format(int(df_maternos['CANTIDAD'].sum()))
print(n_paterno, n_materno)
* Apellido Paternos 21356794 * Apellido Maternos 21190798
# Leer datos
df_adp = pd.read_csv('ADP.csv')
df_adp = df_adp.rename(columns={'Nombre': 'Nombres'})
#Uppercase
df_adp['Apellidos'] = df_adp['Apellidos'].str.upper()
df_adp['Nombres'] = df_adp['Nombres'].str.upper()
cols = df_adp.select_dtypes(include=[np.object]).columns
df_adp[cols] = df_adp[cols].apply(lambda x: x.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8'))
df_adp['nombre'] = df_adp['Apellidos'] + ' ' + df_adp['Nombres']
df_adp = df_adp.iloc[151:len(df_adp)] #Ahora lo tomamos hasta febrero
#Separar apellidos
apellidos = df_adp['Apellidos'].str.split(pat=' ', n=-1, expand=True)
#Arreglar apellidos con problema
# 0 + 1 -> 0, 2 -> 1
zero_list = [152, 159, 384, 699, 729, 742, 908]
def zero(n):
apellidos[0].iloc[n-151] = apellidos.iloc[n-151][0] + ' ' + apellidos.iloc[n-151][1]
apellidos[1].iloc[n-151] = apellidos.iloc[n-151][2]
apellidos[2].iloc[n-151] = None
apellidos[3].iloc[n-151] = None
for n in zero_list:
zero(n)
#0 -> 0, 1 + 2 --> 1
one_list = [168, 177, 498, 516, 659, 685, 690, 941]
def one(n):
apellidos[0].iloc[n-151] = apellidos.iloc[n-151][0]
if n != 498:
apellidos[1].iloc[n-151] = apellidos.iloc[n-151][1] + ' ' + apellidos.iloc[n-151][2]
else:
apellidos[1].iloc[n-151] = apellidos.iloc[n-151][1] + apellidos.iloc[n-151][2]
apellidos[2].iloc[n-151] = None
apellidos[3].iloc[n-151] = None
for n in one_list:
one(n)
two_list = [238, 264, 638, 672, 701, 721]
def two(n):
apellidos[0].iloc[n-151] = apellidos.iloc[n-151][0] + ' ' + apellidos.iloc[n-151][1] + ' ' + apellidos.iloc[n-151][2]
apellidos[1].iloc[n-151] = apellidos.iloc[n-151][3]
apellidos[2].iloc[n-151] = None
apellidos[3].iloc[n-151] = None
for n in two_list:
two(n)
apellidos[0].iloc[299-151] = apellidos.iloc[299-151][0] + ' ' + apellidos.iloc[299-151][1]
apellidos[1].iloc[299-151] = apellidos.iloc[299-151][2] + ' ' + apellidos.iloc[299-151][3]
apellidos[2].iloc[299-151] = None
apellidos[3].iloc[299-151] = None
apellidos[0].iloc[315-151] = apellidos.iloc[315-151][0]
apellidos[1].iloc[315-151] = apellidos.iloc[315-151][1] + ' ' + apellidos.iloc[315-151][2] + ' ' + apellidos.iloc[315-151][3]
apellidos[2].iloc[315-151] = None
apellidos[3].iloc[315-151] = None
df_adp['Apellido Paterno'] = apellidos[0]
df_adp['Apellido Materno'] = apellidos[1]
#Remove tildes
cols = df_adp.select_dtypes(include=[np.object]).columns
df_adp[cols] = df_adp[cols].apply(lambda x: x.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8'))
df_adp
Concurso | Nivel | Cargo | Servicio | Nombres | Apellidos | Periodo | Inicio | Renovación | nombre | Apellido Paterno | Apellido Materno | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
151 | 4956 | II | Director/a Regional Los Rios | Instituto Nacional de Deportes | FELIPE IGNACIO | MENA VILLAR | Nombrado (primer periodo) | 24 feb. 2020 | NaN | MENA VILLAR FELIPE IGNACIO | MENA | VILLAR |
152 | 4974 | II | Director/a Hospital Carlos Van Buren | Servicio de Salud Valparaiso - San Antonio | JAVIER | DEL RIO VALDOVINOS | Nombrado (primer periodo) | 21 feb. 2020 | NaN | DEL RIO VALDOVINOS JAVIER | DEL RIO | VALDOVINOS |
153 | 4957 | II | Jefe/a Departamento Funcion: Agencia Nacional ... | Instituto Salud Publica | HERIBERTO ENRIQUE | GARCIA ESCORZA | Nombrado (primer periodo) | 18 feb. 2020 | NaN | GARCIA ESCORZA HERIBERTO ENRIQUE | GARCIA | ESCORZA |
154 | 5056 | II | Subdirector/a Administrativo/a Hospital Guille... | Servicio de Salud Concepcion | SERGIO RODRIGO | OSORIO LISPERGUER | Nombrado (primer periodo) | 17 feb. 2020 | NaN | OSORIO LISPERGUER SERGIO RODRIGO | OSORIO | LISPERGUER |
155 | 5075 | II | Director/a Hospital de San Jose del Maipo | Servicio de Salud Metropolitano Suroriente | JAIME ANTONIO | CARVAJAL YANEZ | Nombrado (primer periodo) | 17 feb. 2020 | NaN | CARVAJAL YANEZ JAIME ANTONIO | CARVAJAL | YANEZ |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
944 | 1658 | II | Director/a Hospital de Lota | Servicio de Salud Concepcion | PEDRO HUGO | MARTINEZ ESPINOZA | Renovado (tercer periodo) | 23 ene. 2012 | 2018-01-23 | MARTINEZ ESPINOZA PEDRO HUGO | MARTINEZ | ESPINOZA |
945 | 1532 | II | Director Regional Tarapaca | Servicio Electoral | RUBEN | CARRASCO FUENTEALBA | Renovado (tercer periodo) | 15 ene. 2012 | 2018-01-15 | CARRASCO FUENTEALBA RUBEN | CARRASCO | FUENTEALBA |
946 | 1591 | II | Subdirector/a Medico/a Hospital Dr. Victor Rio... | Servicio de Salud Bio - Bio | FERNANDO JORGE | VERGARA URRUTIA | Renovado (tercer periodo) | 1 ene. 2012 | 2018-01-01 | VERGARA URRUTIA FERNANDO JORGE | VERGARA | URRUTIA |
947 | 1600 | II | Director/a Regional Tesorero/a Region de Antof... | Servicio de Tesorerias - Tesoreria General de ... | JUAN CARLOS | GACITUA ARRIAGADA | Renovado (tercer periodo) | 21 nov. 2011 | 2017-11-21 | GACITUA ARRIAGADA JUAN CARLOS | GACITUA | ARRIAGADA |
948 | 1568 | II | Director/a Regional Los Rios | Instituto Nacional de Estadisticas | ANA EDUVIGIS | DELGADO PUENTES | Renovado (tercer periodo) | 10 nov. 2011 | 2017-11-10 | DELGADO PUENTES ANA EDUVIGIS | DELGADO | PUENTES |
798 rows × 12 columns
df_plot_horizontal(df_adp["Apellido Paterno"].value_counts(), 'CANTIDAD APELLIDOS PATERNOS ADP',
'FRECUENCIA ABSOLUTA (#)', 'APELLIDOS', 20, True)
df_plot_horizontal(df_adp["Apellido Materno"].value_counts(), 'CANTIDAD APELLIDOS MATERNOS ADP',
'FRECUENCIA ABSOLUTA (#)', 'APELLIDOS', 20, True)
n_muestra = 798
adp_paternos = df_adp['Apellido Paterno'].value_counts()
adp_maternos = df_adp['Apellido Materno'].value_counts()
adp_conjunto = pd.merge(adp_maternos, adp_paternos, left_index=True, right_index=True, how='inner')
adp_conjunto['Total'] = adp_conjunto['Apellido Paterno'] + adp_conjunto['Apellido Materno']
adp_conjunto['Porcentaje'] = (adp_conjunto['Total']/adp_conjunto['Total'].sum())*100
adp_conjunto = adp_conjunto.sort_values(by=['Total'], ascending=False)
adp_conjunto = adp_conjunto[['Total', 'Apellido Paterno', 'Apellido Materno', 'Porcentaje']]
adp_conjunto.head(20)
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
GONZALEZ | 31 | 16 | 15 | 3.91 |
DIAZ | 19 | 12 | 7 | 2.40 |
ROJAS | 18 | 6 | 12 | 2.27 |
PEREZ | 17 | 10 | 7 | 2.14 |
MUNOZ | 16 | 5 | 11 | 2.02 |
GUTIERREZ | 13 | 9 | 4 | 1.64 |
FERNANDEZ | 13 | 5 | 8 | 1.64 |
RAMIREZ | 13 | 7 | 6 | 1.64 |
SEPULVEDA | 11 | 4 | 7 | 1.39 |
SILVA | 11 | 6 | 5 | 1.39 |
MIRANDA | 10 | 7 | 3 | 1.26 |
CASTILLO | 10 | 6 | 4 | 1.26 |
SOTO | 10 | 4 | 6 | 1.26 |
MARTINEZ | 9 | 5 | 4 | 1.13 |
MORALES | 9 | 4 | 5 | 1.13 |
CONTRERAS | 9 | 3 | 6 | 1.13 |
LOPEZ | 9 | 3 | 6 | 1.13 |
ALVAREZ | 9 | 2 | 7 | 1.13 |
GOMEZ | 8 | 3 | 5 | 1.01 |
PALMA | 8 | 6 | 2 | 1.01 |
n_muestra = 798
diff = pd.merge(adp_conjunto[['Total', 'Porcentaje']], df_conjunto['PORCENTAJE_total'], left_index=True, right_index=True, how='inner')
diff['Caso ideal'] = 798*diff['PORCENTAJE_total']/100
diff['-+ Personal'] = diff['Total'] - n_muestra*diff['PORCENTAJE_total']/100
diff['-+ %'] = (diff['-+ Personal']/diff['Caso ideal'])*100
diff_des = diff.sort_values(by=['-+ %'], ascending=False)
diff_des = diff_des[diff_des['Total']>2]
diff_des[['Total', 'Caso ideal', '-+ %']].head(20)
Total | Caso ideal | -+ % | |
---|---|---|---|
LAVANDEROS | 4 | 0.03 | 11,701.85 |
VIVALLO | 3 | 0.04 | 7,562.65 |
VIAL | 3 | 0.12 | 2,499.42 |
ITURRIAGA | 4 | 0.17 | 2,285.39 |
MONTES | 4 | 0.23 | 1,605.83 |
SOTOMAYOR | 4 | 0.25 | 1,510.00 |
DEL RIO | 3 | 0.21 | 1,328.85 |
BLANCO | 3 | 0.29 | 944.01 |
MARCHANT | 5 | 0.67 | 647.37 |
ARANGUIZ | 3 | 0.45 | 572.13 |
VILLAGRAN | 3 | 0.46 | 548.02 |
BORQUEZ | 3 | 0.52 | 477.54 |
ALTAMIRANO | 3 | 0.53 | 467.36 |
SERRANO | 3 | 0.55 | 443.88 |
VERDUGO | 3 | 0.58 | 412.92 |
URRUTIA | 5 | 1.05 | 376.58 |
JARAMILLO | 3 | 0.68 | 343.57 |
RIFFO | 3 | 0.68 | 340.71 |
MEZA | 5 | 1.16 | 332.48 |
PALMA | 8 | 1.90 | 320.03 |
n_categories = 20
label2 = diff_des['Total'].head(n_categories).values
label3 = diff_des['Caso ideal'].head(n_categories).values
df_plot_horizontal(diff_des['-+ %'].head(n_categories), 'CANTIDAD SOBRE-APELLIDOS ADP',
'FRECUENCIA ABSOLUTA (#)', 'APELLIDOS', 20, interger=None, doble_label=[label2,label3])
diff_asc = diff.sort_values(by=['-+ %'], ascending=True)
diff_asc[['Total', 'Caso ideal', '-+ %']].head(20)
Total | Caso ideal | -+ % | |
---|---|---|---|
JARA | 2 | 3.71 | -46.04 |
FLORES | 3 | 5.10 | -41.14 |
NUNEZ | 3 | 3.80 | -21.02 |
AGUILERA | 2 | 2.49 | -19.79 |
PARRA | 2 | 2.45 | -18.32 |
NAVARRO | 2 | 2.44 | -18.10 |
RIVERA | 3 | 3.39 | -11.48 |
TORRES | 5 | 5.18 | -3.48 |
VEGA | 3 | 2.99 | 0.49 |
SAEZ | 2 | 1.88 | 6.30 |
OLIVARES | 3 | 2.75 | 9.05 |
VASQUEZ | 5 | 4.39 | 13.81 |
MUNOZ | 16 | 13.28 | 20.50 |
SAAVEDRA | 3 | 2.49 | 20.54 |
ESPINOZA | 6 | 4.93 | 21.68 |
ARAVENA | 3 | 2.41 | 24.67 |
PENA | 3 | 2.39 | 25.61 |
RODRIGUEZ | 7 | 5.56 | 26.00 |
VERA | 4 | 3.15 | 27.10 |
SALAS | 2 | 1.55 | 28.76 |
n_categories = 20
size = (30,10)
label2 = diff_asc['Total'].head(n_categories).values
label3 = diff_asc['Caso ideal'].head(n_categories).values
df_plot_horizontal(diff_asc['-+ %'], 'CANTIDAD SUB-APELLIDOS ADP',
'FRECUENCIA ABSOLUTA (#)', 'APELLIDOS', 20, interger=None, doble_label=[label2,label3], size=size)
Esta representación vemos que hay muchos apellidos que quedan fuera de la nómima del ADP. Eso es normal ya que la muestra es de sólo aprox 800 personas, i.e, 1600 apellidos. Sería interesante ver la baja participación de clusters, ej: indígena.
total_conjunto = pd.merge(df_maternos_total, adp_conjunto, left_index=True, right_index=True, how='left')
total_conjunto = total_conjunto[['CANTIDAD','PORCENTAJE','Total', 'Porcentaje']]
total_conjunto['Total'].fillna(0, inplace=True)
total_conjunto['Porcentaje'].fillna(0, inplace=True)
total_conjunto['Caso Ideal'] = total_conjunto['PORCENTAJE']/100 * n_muestra
total_conjunto['-+ Personas'] = total_conjunto['Total'] - total_conjunto['Caso Ideal']
total_conjunto['-+ %'] = (total_conjunto['-+ Personas']/total_conjunto['Caso Ideal'])*100
total_conjunto = total_conjunto[total_conjunto['-+ Personas'] < 0].sort_values(by=['-+ %'], ascending=True)
total_conjunto[['Total', 'Caso Ideal', '-+ %']].head(20)
Total | Caso Ideal | -+ % | |
---|---|---|---|
AP MATERNO | |||
FREITEZ | 0.00 | 0.00 | -100.00 |
WECHSELBERGER | 0.00 | 0.00 | -100.00 |
ANTA | 0.00 | 0.00 | -100.00 |
LABOURET | 0.00 | 0.00 | -100.00 |
KAEMFFER | 0.00 | 0.00 | -100.00 |
QUEUPE | 0.00 | 0.00 | -100.00 |
KAGI | 0.00 | 0.00 | -100.00 |
KALTENBACHER | 0.00 | 0.00 | -100.00 |
KALAYKY | 0.00 | 0.00 | -100.00 |
CORNIELLES | 0.00 | 0.00 | -100.00 |
KALTSCHMIDT | 0.00 | 0.00 | -100.00 |
EDEZMA | 0.00 | 0.00 | -100.00 |
CARELA | 0.00 | 0.00 | -100.00 |
LACABARATZ | 0.00 | 0.00 | -100.00 |
CARFUEN | 0.00 | 0.00 | -100.00 |
QUENQUELAF | 0.00 | 0.00 | -100.00 |
SCHWERTTER | 0.00 | 0.00 | -100.00 |
CARDIEL | 0.00 | 0.00 | -100.00 |
EDME | 0.00 | 0.00 | -100.00 |
VEECHE | 0.00 | 0.00 | -100.00 |
0.10.1 Vemos no hay presencia indígena en el ADP
adp_conjunto[adp_conjunto.index.isin(apellidos_mapuches_painemal)]
Total | Apellido Paterno | Apellido Materno | Porcentaje |
---|
adp_conjunto[adp_conjunto.index.isin(apellidos_mapuches_amigos)]
Total | Apellido Paterno | Apellido Materno | Porcentaje |
---|
adp_conjunto[adp_conjunto.index.isin(apellidos_aymaras)]
Total | Apellido Paterno | Apellido Materno | Porcentaje |
---|
adp_conjunto[adp_conjunto.index.isin(apellidos_atacameños)]
Total | Apellido Paterno | Apellido Materno | Porcentaje |
---|
adp_conjunto[adp_conjunto.index.isin(apellidos_palestinos)]
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
ZAROR | 2 | 1 | 1 | 0.25 |
adp_conjunto[adp_conjunto.index.isin(apellidos_judios)]
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
ERRAZURIZ | 2 | 1 | 1 | 0.25 |
adp_conjunto[adp_conjunto.index.isin(apellidos_romani)]
Total | Apellido Paterno | Apellido Materno | Porcentaje |
---|
adp_conjunto[adp_conjunto.index.isin(apellidos_mixtos)]
Total | Apellido Paterno | Apellido Materno | Porcentaje |
---|
adp_conjunto[adp_conjunto.index.isin(apellidos_aristocratas)]
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
VIAL | 3 | 1 | 2 | 0.38 |
adp_conjunto[adp_conjunto.index.isin(apellidos_mixtos_aristocratas)]
Total | Apellido Paterno | Apellido Materno | Porcentaje |
---|
adp_conjunto[adp_conjunto.index.isin(apellidos_prestigio)]
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
VIAL | 3 | 1 | 2 | 0.38 |
TAGLE | 2 | 1 | 1 | 0.25 |
ERRAZURIZ | 2 | 1 | 1 | 0.25 |
adp_conjunto[adp_conjunto.index.isin(apellidos_asiatico)]
Total | Apellido Paterno | Apellido Materno | Porcentaje |
---|
n_muestra = 798*2
ideal_mapuche_painemal = df_conjunto[df_conjunto.index.isin(apellidos_mapuches_painemal)][['PORCENTAJE_total']].sum()[0]*n_muestra/100
real_mapuche_painemal = adp_conjunto[adp_conjunto.index.isin(apellidos_mapuches_painemal)][['Total']].sum()[0]
ideal_mapuches_amigos = df_conjunto[df_conjunto.index.isin(apellidos_mapuches_amigos)][['PORCENTAJE_total']].sum()[0]*n_muestra/100
real_mapuches_amigos = adp_conjunto[adp_conjunto.index.isin(apellidos_mapuches_amigos)][['Total']].sum()[0]
ideal_aymaras = df_conjunto[df_conjunto.index.isin(apellidos_aymaras)][['PORCENTAJE_total']].sum()[0]*n_muestra/100
real_aymaras = adp_conjunto[adp_conjunto.index.isin(apellidos_aymaras)][['Total']].sum()[0]
ideal_atacameños = df_conjunto[df_conjunto.index.isin(apellidos_atacameños)][['PORCENTAJE_total']].sum()[0]*n_muestra/100
real_atacameños = adp_conjunto[adp_conjunto.index.isin(apellidos_atacameños)][['Total']].sum()[0]
ideal_judios = df_conjunto[df_conjunto.index.isin(apellidos_judios)][['PORCENTAJE_total']].sum()[0]*n_muestra/100
real_judios = adp_conjunto[adp_conjunto.index.isin(apellidos_judios)][['Total']].sum()[0]
ideal_romani = df_conjunto[df_conjunto.index.isin(apellidos_romani)][['PORCENTAJE_total']].sum()[0]*n_muestra/100
real_romani = adp_conjunto[adp_conjunto.index.isin(apellidos_romani)][['Total']].sum()[0]
ideal_mixto = df_conjunto[df_conjunto.index.isin(apellidos_mixtos)][['PORCENTAJE_total']].sum()[0]*n_muestra/100
real_mixto = adp_conjunto[adp_conjunto.index.isin(apellidos_mixtos)][['Total']].sum()[0]
ideal_mixtos_aristocratas = df_conjunto[df_conjunto.index.isin(apellidos_mixtos_aristocratas)][['PORCENTAJE_total']].sum()[0]*n_muestra/100
real_mixtos_aristocratas = adp_conjunto[adp_conjunto.index.isin(apellidos_mixtos_aristocratas)][['Total']].sum()[0]
ideal_prestigio = df_conjunto[df_conjunto.index.isin(apellidos_prestigio)][['PORCENTAJE_total']].sum()[0]*n_muestra/100
real_prestigio = adp_conjunto[adp_conjunto.index.isin(apellidos_prestigio)][['Total']].sum()[0]
ideal_asiatico = df_conjunto[df_conjunto.index.isin(apellidos_asiatico)][['PORCENTAJE_total']].sum()[0]*n_muestra/100
real_asiatico = adp_conjunto[adp_conjunto.index.isin(apellidos_asiatico)][['Total']].sum()[0]
ideal_palestino = df_conjunto[df_conjunto.index.isin(apellidos_palestinos)][['PORCENTAJE_total']].sum()[0]*n_muestra/100
real_palestino = adp_conjunto[adp_conjunto.index.isin(apellidos_palestinos)][['Total']].sum()[0]
ideal_aristocrata = df_conjunto[df_conjunto.index.isin(apellidos_aristocratas)][['PORCENTAJE_total']].sum()[0]*n_muestra/100
real_aristocrata = adp_conjunto[adp_conjunto.index.isin(apellidos_aristocratas)][['Total']].sum()[0]
columns = ['Aristócratas', 'Asiáticos', 'Atacameños', 'Aymaras', 'Judios', 'Mapuches (Amigo)', 'Mapuches (Painemal)', 'Mixtos', 'Mixto-Aristócratas', 'Palestinos', 'Prestigiosos', 'Romanis']
real = [real_aristocrata, real_asiatico, real_atacameños, real_aymaras, real_judios, real_mapuches_amigos, real_mapuche_painemal, real_mixto, real_mixtos_aristocratas, real_palestino, real_prestigio, real_romani]
ideal = [ideal_aristocrata, ideal_asiatico, ideal_atacameños, ideal_aymaras, ideal_judios, ideal_mapuches_amigos, ideal_mapuche_painemal, ideal_mixto, ideal_mixtos_aristocratas, ideal_palestino, ideal_prestigio, ideal_romani]
data = {'Grupos': columns,
'Real':real,
'Ideal':ideal}
tabla_resumen = pd.DataFrame(data)
tabla_resumen
Grupos | Real | Ideal | |
---|---|---|---|
0 | Aristócratas | 3 | 0.46 |
1 | Asiáticos | 0 | 0.12 |
2 | Atacameños | 0 | 0.23 |
3 | Aymaras | 0 | 3.63 |
4 | Judios | 2 | 0.51 |
5 | Mapuches (Amigo) | 0 | 66.81 |
6 | Mapuches (Painemal) | 0 | 61.99 |
7 | Mixtos | 0 | 0.52 |
8 | Mixto-Aristócratas | 0 | 0.33 |
9 | Palestinos | 2 | 0.36 |
10 | Prestigiosos | 7 | 2.98 |
11 | Romanis | 0 | 0.24 |
Leer base de datos del personal de planta
month = 'Febrero'
year = 2020
df_planta = pd.read_csv(month + str(year) +'/PersonalPlanta.csv')
#Remove tildes
cols = df_planta.select_dtypes(include=[np.object]).columns
df_planta[cols] =df_planta[cols].apply(lambda x: x.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8'))
#Uppercase
df_planta['nombre'] = df_planta['nombre'].str.upper()
pd.set_option('display.max_columns', 500)
a = list(df_planta['observaciones'].unique())
dics = set()
keys = ["Alta Dirección Pública","ALTA DIRECCION PUBLICA","alta direccion publica","ADP","Alto Directivo Público","ALTO DIRECTIVO PÚBLICO","Alta Direccion Publica","ALTA DIRECCIÓN PÚBLICA","ALTA DIRECCIÓN"]
for i in a:
bolean = False
for k in keys:
if k in str(i):
bolean = True
if not bolean:
dics.add(i)
#Método 1: hacer el join de tablas por el nombre exacto
df_join_adp_1 = pd.merge(df_adp, df_planta, on='nombre', how='inner')
#df_join_adp_1 = df_join_adp_1.iloc[:, 13:]
#Método 2: filtran su contiene la palabra Alta dirección pública en Planta
df_join_adp_2 = df_planta[df_planta.observaciones.str.contains("Alta Dirección Pública", na=False) & ~df_planta['nombre'].isin(list(df_join_adp_1['nombre']))]
df_join_adp = df_join_adp_1.append(df_join_adp_2, ignore_index=False)
df_join_adp_3 = df_planta[df_planta.observaciones.str.contains("ALTA DIRECCION PUBLICA", na=False) & ~df_planta['nombre'].isin(list(df_join_adp['nombre']))]
df_join_adp = df_join_adp.append(df_join_adp_3, ignore_index=False)
df_join_adp_4 = df_planta[df_planta.observaciones.str.contains("alta direccion publica", na=False) & ~df_planta['nombre'].isin(list(df_join_adp['nombre']))]
df_join_adp = df_join_adp.append(df_join_adp_4, ignore_index=False)
df_join_adp_5 = df_planta[df_planta.observaciones.str.contains("ADP", na=False) & ~df_planta['nombre'].isin(list(df_join_adp['nombre']))]
df_join_adp = df_join_adp.append(df_join_adp_5, ignore_index=False)
df_join_adp_6 = df_planta[df_planta.observaciones.str.contains("Alto Directivo Público", na=False) & ~df_planta['nombre'].isin(list(df_join_adp['nombre']))]
df_join_adp = df_join_adp.append(df_join_adp_6, ignore_index=False)
df_join_adp_7 = df_planta[df_planta.observaciones.str.contains("ALTO DIRECTIVO PÚBLICO", na=False) & ~df_planta['nombre'].isin(list(df_join_adp['nombre']))]
df_join_adp = df_join_adp.append(df_join_adp_7, ignore_index=False)
df_join_adp_8 = df_planta[df_planta.observaciones.str.contains("Alta Direccion Publica", na=False) & ~df_planta['nombre'].isin(list(df_join_adp['nombre']))]
df_join_adp = df_join_adp.append(df_join_adp_8, ignore_index=False)
df_join_adp_9 = df_planta[df_planta.observaciones.str.contains("ALTA DIRECCIÓN PÚBLICA", na=False) & ~df_planta['nombre'].isin(list(df_join_adp['nombre']))]
df_join_adp = df_join_adp.append(df_join_adp_9, ignore_index=False)
df_join_adp_10 = df_planta[df_planta.observaciones.str.contains("ALTA DIRECCIÓN", na=False) & ~df_planta['nombre'].isin(list(df_join_adp['nombre']))]
df_join_adp = df_join_adp.append(df_join_adp_10, ignore_index=False)
df_join_adp_11 = df_planta[df_planta.observaciones.str.contains("alta dirección pública", na=False) & ~df_planta['nombre'].isin(list(df_join_adp['nombre']))]
df_join_adp = df_join_adp.append(df_join_adp_11, ignore_index=False)
df_join_adp_12 = df_planta[df_planta.observaciones.str.contains("Alta Dirección Publica", na=False) & ~df_planta['nombre'].isin(list(df_join_adp['nombre']))]
df_join_adp = df_join_adp.append(df_join_adp_12, ignore_index=False)
df_join_adp_13 = df_planta[df_planta.observaciones.str.contains("Alta Direccion Pública", na=False) & ~df_planta['nombre'].isin(list(df_join_adp['nombre']))]
df_join_adp = df_join_adp.append(df_join_adp_13, ignore_index=False)
df_join_adp_14 = df_planta[df_planta.observaciones.str.contains("ALTA DIRECCION PÚBLICA", na=False) & ~df_planta['nombre'].isin(list(df_join_adp['nombre']))]
df_join_adp = df_join_adp.append(df_join_adp_14, ignore_index=False)
#Contrata
contrata_adp = df_contrata[df_contrata['nombre'].isin(list(df_adp['nombre']))& ~df_contrata['nombre'].isin(list(df_join_adp['nombre']))]
contrata_adp2 = df_adp[df_adp['nombre'].isin(list(contrata_adp['nombre']))]
df_join_adp_15 = pd.merge(contrata_adp2, contrata_adp, on='nombre', how='inner')
df_join_adp = df_join_adp.append(df_join_adp_15, ignore_index=False)
#Drop Duplicates
df_join_adp = df_join_adp.drop_duplicates(subset=['nombre'], keep="first")
df_join_adp = df_join_adp.reset_index()
df_join_adp
index | Concurso | Nivel | Cargo | Servicio | Nombres | Apellidos | Periodo | Inicio | Renovación | nombre | Apellido Paterno | Apellido Materno | Unnamed: 0 | camino | organismo_nombre | organismo_codigo | fecha_publicacion | anyo | Mes | Tipo Estamento | grado_eus | tipo_calificacionp | Tipo cargo | region | asignaciones | Tipo Unidad monetaria | remuneracionbruta_mensual | remuliquida_mensual | diurnas | nocturnas | festivas | fecha_ingreso | fecha_termino | observaciones | enlace | viaticos | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 4,957.00 | II | Jefe/a Departamento Funcion: Agencia Nacional ... | Instituto Salud Publica | HERIBERTO ENRIQUE | GARCIA ESCORZA | Nombrado (primer periodo) | 18 feb. 2020 | NaN | GARCIA ESCORZA HERIBERTO ENRIQUE | GARCIA | ESCORZA | 154,846.00 | /2020/Febrero | Instituto de Salud Publica (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Directivo | 3 | QUIMICOFARMACEUTICO | DIRECTIVO | Region Metropolitana de Santiago | (34) | Pesos | 2,297,597.00 | 1,773,017.00 | No tiene | No tiene | No tiene | 18/02/2020 | 18/02/2023 | Alta Direccion Publica RES. TRA N 1651862020 | No | 0.00 |
1 | 1 | 5,075.00 | II | Director/a Hospital de San Jose del Maipo | Servicio de Salud Metropolitano Suroriente | JAIME ANTONIO | CARVAJAL YANEZ | Nombrado (primer periodo) | 17 feb. 2020 | NaN | CARVAJAL YANEZ JAIME ANTONIO | CARVAJAL | YANEZ | 96,483.00 | /2020/Febrero | Servicio de Salud Metropolitano Sur Oriente | AO012 | 2020/09/25 | 2020 | Febrero | Directivo | 6 | INGENIERO COMERCIAL | DIRECTOR DE HOSPITAL | Region Metropolitana de Santiago | (34) | Pesos | 2,258,717.00 | 1,964,226.00 | No tiene | No tiene | No tiene | 17/02/2020 | Indefinido | Sin observaciones | No | 0.00 |
2 | 2 | 5,053.00 | II | Director/a Hospital de Parral | Servicio de Salud Maule | RICARDO JOSE | PERALES ARAVENA | Nombrado (primer periodo) | 7 feb. 2020 | NaN | PERALES ARAVENA RICARDO JOSE | PERALES | ARAVENA | 100,099.00 | /2020/FEBRERO 2020 | Servicio de Salud Maule | AO025 | 2020/10/14 | 2020 | Febrero | Directivo | 6 | INGENIERO (A) POLITECNICO MILITAR | DIRECTIVO ADP 2o NIVEL | Region del Maule | (34) | Pesos | 3,363,217.00 | 2,771,678.00 | No tiene | No tiene | No tiene | 07/02/2020 | Indefinido | Sin observaciones | No | 0.00 |
3 | 3 | 5,008.00 | II | Fiscal | Superintendencia de Educacion Superior | FRANCISCO JOSE | ACHURRA GONZALEZ | Nombrado (primer periodo) | 7 feb. 2020 | NaN | ACHURRA GONZALEZ FRANCISCO JOSE | ACHURRA | GONZALEZ | 159,958.00 | /Ano 2020/Febrero | Superintendencia de Educacion Superior | AJ021 | 2020/10/08 | 2020 | Febrero | Directivo | 2 | Abogado | FISCAL | Region Metropolitana de Santiago | (34)(324)(66)(76)(75)(07)(221)(131) | Pesos | 5,632,499.00 | 4,441,444.00 | No tiene | No tiene | No tiene | 07/02/2020 | Indefinido | Sin observaciones | No | 0.00 |
4 | 4 | 4,980.00 | II | Director/a Hospital de Ancud | Servicio de Salud Chiloe | JOSE VICTORINO | CARDENAS BURCE | Nombrado (primer periodo) | 3 feb. 2020 | NaN | CARDENAS BURCE JOSE VICTORINO | CARDENAS | BURCE | 174,114.00 | /2020/Febrero | Servicio de Salud de Chiloe | AO035 | 2020/10/09 | 2020 | Febrero | Directivo | 6 | ASISTENTE SOCIAL | DIRECTOR DE HOSPITAL | Region de Los Lagos | (34)(37) | Pesos | 3,960,219.00 | 3,322,762.00 | No tiene | No tiene | No tiene | 03/02/2020 | Indefinido | Sin observaciones | a href=https:www.declaracionjurada.cldip targe... | 0.00 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
680 | 154739 | nan | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | RAMIREZ JARAMILLO PAMELA ELIZABETH | NaN | NaN | 125,002.00 | /Ano 2020/Febrero 2020 | Servicio Nacional del Consumidor (SERNAC) | AH009 | 2020/10/23 | 2020 | Febrero | Directivo | 8 | Ingeniero Comercial Master en Direccion Gener... | DIRECTORA REGIONAL | Region de Magallanes | (282)(281)(64)(37)(34)(33) | Pesos | 4,352,237.00 | nan | No tiene | No tiene | No tiene | 03/11/2005 | 02/07/2021 | Percibe Asig. Alta Direccion Publica (1%). | No | 0.00 |
681 | 160705 | nan | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | QUINTANILLA ASENCIO CARLOS | NaN | NaN | 154,812.00 | /2020/Febrero | Instituto de Salud Publica (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Directivo | 3 | INGENIERO COMERCIAL | DIRECTIVO | Region Metropolitana de Santiago | (34) | Pesos | 4,994,016.00 | 3,458,927.00 | No tiene | No tiene | No tiene | 01/01/2019 | 01/01/2022 | Alta Direccion Publica RES. TRA N 165022019 | No | 0.00 |
682 | 0 | 4,974.00 | II | Director/a Hospital Carlos Van Buren | Servicio de Salud Valparaiso - San Antonio | JAVIER | DEL RIO VALDOVINOS | Nombrado (primer periodo) | 21 feb. 2020 | NaN | DEL RIO VALDOVINOS JAVIER | DEL RIO | VALDOVINOS | nan | /Año 2020/Febrero | Servicio de Salud Valparaíso San Antonio | AO022 | 2020/09/30 | 2020 | Febrero | Profesional | 5 | INGENIERO (A) EJECUCION INDUSTRIAL | JEFE DE SUBDEPARTAMENTO | Región de Valparaíso | (36)(01) | Pesos | 2,447,788.00 | 1,888,403.00 | No tiene | No tiene | No tiene | 01/01/2020 | 20/02/2020 | Sin observaciones | No | nan |
683 | 1 | 4,557.00 | II | Director/a Hospital de Curico | Servicio de Salud Maule | MAURO JOAN | SALINAS CORTES | Nombrado (primer periodo) | 13 may. 2019 | NaN | SALINAS CORTES MAURO JOAN | SALINAS | CORTES | nan | /2020/Febrero | Hospital de Curicó | AO083 | 2020/10/01 | 2020 | Febrero | Directivo | 3 | INGENIERO (A) CIVIL INDUSTRIAL | DIRECTIVO ADP 2º NIVELK4:K7K4:K43 | Región del Maule | (34) | Pesos | 5,935,327.00 | 4,725,780.00 | No tiene | No tiene | No tiene | 13/05/2019 | 13/05/2022 | Sin observaciones | a href=https:www.declaracionjurada.cldipindex.... | nan |
684 | 2 | 3,850.00 | II | Subdirector/a Administrativo/a Hospital de Curico | Servicio de Salud Maule | EDUARDO AGUSTIN | SOTO ARAYA | Nombrado (primer periodo) | 1 may. 2018 | NaN | SOTO ARAYA EDUARDO AGUSTIN | SOTO | ARAYA | nan | /2020/Febrero | Hospital de Curicó | AO083 | 2020/10/01 | 2020 | Febrero | Profesional | 4 | INGENIERO COMERCIAL | SUBDIRECTOR ADMINISTRATIVO | Región del Maule | (34) | Pesos | 5,059,883.00 | 4,113,611.00 | No tiene | No tiene | No tiene | 01/05/2018 | 01/05/2021 | Sin observaciones | a href=https:www.declaracionjurada.cldipindex.... | nan |
685 rows × 37 columns
apellidos_ = df_join_adp[df_join_adp['Apellido Paterno'].isnull()]['nombre'].str.split(pat=' ', n=-1, expand=True)
apellidos_.iloc[613- 600][0] = apellidos_.iloc[613- 600][0]+ ' ' + apellidos_.iloc[613- 600][1]
apellidos_.iloc[613- 600][1] = apellidos_.iloc[613- 600][2]
apellidos_.iloc[633- 600][1] = apellidos_.iloc[633- 600][1]+ ' ' + apellidos_.iloc[633- 600][2]
df_join_adp.iloc[600:682]['Apellido Paterno'] = apellidos_[0]
df_join_adp.iloc[600:682]['Apellido Materno'] = apellidos_[1]
df_join_adp
<ipython-input-696-10d52a909c28>:5: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy df_join_adp.iloc[600:682]['Apellido Paterno'] = apellidos_[0] <ipython-input-696-10d52a909c28>:6: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy df_join_adp.iloc[600:682]['Apellido Materno'] = apellidos_[1]
index | Concurso | Nivel | Cargo | Servicio | Nombres | Apellidos | Periodo | Inicio | Renovación | nombre | Apellido Paterno | Apellido Materno | Unnamed: 0 | camino | organismo_nombre | organismo_codigo | fecha_publicacion | anyo | Mes | Tipo Estamento | grado_eus | tipo_calificacionp | Tipo cargo | region | asignaciones | Tipo Unidad monetaria | remuneracionbruta_mensual | remuliquida_mensual | diurnas | nocturnas | festivas | fecha_ingreso | fecha_termino | observaciones | enlace | viaticos | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 4,957.00 | II | Jefe/a Departamento Funcion: Agencia Nacional ... | Instituto Salud Publica | HERIBERTO ENRIQUE | GARCIA ESCORZA | Nombrado (primer periodo) | 18 feb. 2020 | NaN | GARCIA ESCORZA HERIBERTO ENRIQUE | GARCIA | ESCORZA | 154,846.00 | /2020/Febrero | Instituto de Salud Publica (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Directivo | 3 | QUIMICOFARMACEUTICO | DIRECTIVO | Region Metropolitana de Santiago | (34) | Pesos | 2,297,597.00 | 1,773,017.00 | No tiene | No tiene | No tiene | 18/02/2020 | 18/02/2023 | Alta Direccion Publica RES. TRA N 1651862020 | No | 0.00 |
1 | 1 | 5,075.00 | II | Director/a Hospital de San Jose del Maipo | Servicio de Salud Metropolitano Suroriente | JAIME ANTONIO | CARVAJAL YANEZ | Nombrado (primer periodo) | 17 feb. 2020 | NaN | CARVAJAL YANEZ JAIME ANTONIO | CARVAJAL | YANEZ | 96,483.00 | /2020/Febrero | Servicio de Salud Metropolitano Sur Oriente | AO012 | 2020/09/25 | 2020 | Febrero | Directivo | 6 | INGENIERO COMERCIAL | DIRECTOR DE HOSPITAL | Region Metropolitana de Santiago | (34) | Pesos | 2,258,717.00 | 1,964,226.00 | No tiene | No tiene | No tiene | 17/02/2020 | Indefinido | Sin observaciones | No | 0.00 |
2 | 2 | 5,053.00 | II | Director/a Hospital de Parral | Servicio de Salud Maule | RICARDO JOSE | PERALES ARAVENA | Nombrado (primer periodo) | 7 feb. 2020 | NaN | PERALES ARAVENA RICARDO JOSE | PERALES | ARAVENA | 100,099.00 | /2020/FEBRERO 2020 | Servicio de Salud Maule | AO025 | 2020/10/14 | 2020 | Febrero | Directivo | 6 | INGENIERO (A) POLITECNICO MILITAR | DIRECTIVO ADP 2o NIVEL | Region del Maule | (34) | Pesos | 3,363,217.00 | 2,771,678.00 | No tiene | No tiene | No tiene | 07/02/2020 | Indefinido | Sin observaciones | No | 0.00 |
3 | 3 | 5,008.00 | II | Fiscal | Superintendencia de Educacion Superior | FRANCISCO JOSE | ACHURRA GONZALEZ | Nombrado (primer periodo) | 7 feb. 2020 | NaN | ACHURRA GONZALEZ FRANCISCO JOSE | ACHURRA | GONZALEZ | 159,958.00 | /Ano 2020/Febrero | Superintendencia de Educacion Superior | AJ021 | 2020/10/08 | 2020 | Febrero | Directivo | 2 | Abogado | FISCAL | Region Metropolitana de Santiago | (34)(324)(66)(76)(75)(07)(221)(131) | Pesos | 5,632,499.00 | 4,441,444.00 | No tiene | No tiene | No tiene | 07/02/2020 | Indefinido | Sin observaciones | No | 0.00 |
4 | 4 | 4,980.00 | II | Director/a Hospital de Ancud | Servicio de Salud Chiloe | JOSE VICTORINO | CARDENAS BURCE | Nombrado (primer periodo) | 3 feb. 2020 | NaN | CARDENAS BURCE JOSE VICTORINO | CARDENAS | BURCE | 174,114.00 | /2020/Febrero | Servicio de Salud de Chiloe | AO035 | 2020/10/09 | 2020 | Febrero | Directivo | 6 | ASISTENTE SOCIAL | DIRECTOR DE HOSPITAL | Region de Los Lagos | (34)(37) | Pesos | 3,960,219.00 | 3,322,762.00 | No tiene | No tiene | No tiene | 03/02/2020 | Indefinido | Sin observaciones | a href=https:www.declaracionjurada.cldip targe... | 0.00 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
680 | 154739 | nan | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | RAMIREZ JARAMILLO PAMELA ELIZABETH | RAMIREZ | JARAMILLO | 125,002.00 | /Ano 2020/Febrero 2020 | Servicio Nacional del Consumidor (SERNAC) | AH009 | 2020/10/23 | 2020 | Febrero | Directivo | 8 | Ingeniero Comercial Master en Direccion Gener... | DIRECTORA REGIONAL | Region de Magallanes | (282)(281)(64)(37)(34)(33) | Pesos | 4,352,237.00 | nan | No tiene | No tiene | No tiene | 03/11/2005 | 02/07/2021 | Percibe Asig. Alta Direccion Publica (1%). | No | 0.00 |
681 | 160705 | nan | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | QUINTANILLA ASENCIO CARLOS | QUINTANILLA | ASENCIO | 154,812.00 | /2020/Febrero | Instituto de Salud Publica (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Directivo | 3 | INGENIERO COMERCIAL | DIRECTIVO | Region Metropolitana de Santiago | (34) | Pesos | 4,994,016.00 | 3,458,927.00 | No tiene | No tiene | No tiene | 01/01/2019 | 01/01/2022 | Alta Direccion Publica RES. TRA N 165022019 | No | 0.00 |
682 | 0 | 4,974.00 | II | Director/a Hospital Carlos Van Buren | Servicio de Salud Valparaiso - San Antonio | JAVIER | DEL RIO VALDOVINOS | Nombrado (primer periodo) | 21 feb. 2020 | NaN | DEL RIO VALDOVINOS JAVIER | DEL RIO | VALDOVINOS | nan | /Año 2020/Febrero | Servicio de Salud Valparaíso San Antonio | AO022 | 2020/09/30 | 2020 | Febrero | Profesional | 5 | INGENIERO (A) EJECUCION INDUSTRIAL | JEFE DE SUBDEPARTAMENTO | Región de Valparaíso | (36)(01) | Pesos | 2,447,788.00 | 1,888,403.00 | No tiene | No tiene | No tiene | 01/01/2020 | 20/02/2020 | Sin observaciones | No | nan |
683 | 1 | 4,557.00 | II | Director/a Hospital de Curico | Servicio de Salud Maule | MAURO JOAN | SALINAS CORTES | Nombrado (primer periodo) | 13 may. 2019 | NaN | SALINAS CORTES MAURO JOAN | SALINAS | CORTES | nan | /2020/Febrero | Hospital de Curicó | AO083 | 2020/10/01 | 2020 | Febrero | Directivo | 3 | INGENIERO (A) CIVIL INDUSTRIAL | DIRECTIVO ADP 2º NIVELK4:K7K4:K43 | Región del Maule | (34) | Pesos | 5,935,327.00 | 4,725,780.00 | No tiene | No tiene | No tiene | 13/05/2019 | 13/05/2022 | Sin observaciones | a href=https:www.declaracionjurada.cldipindex.... | nan |
684 | 2 | 3,850.00 | II | Subdirector/a Administrativo/a Hospital de Curico | Servicio de Salud Maule | EDUARDO AGUSTIN | SOTO ARAYA | Nombrado (primer periodo) | 1 may. 2018 | NaN | SOTO ARAYA EDUARDO AGUSTIN | SOTO | ARAYA | nan | /2020/Febrero | Hospital de Curicó | AO083 | 2020/10/01 | 2020 | Febrero | Profesional | 4 | INGENIERO COMERCIAL | SUBDIRECTOR ADMINISTRATIVO | Región del Maule | (34) | Pesos | 5,059,883.00 | 4,113,611.00 | No tiene | No tiene | No tiene | 01/05/2018 | 01/05/2021 | Sin observaciones | a href=https:www.declaracionjurada.cldipindex.... | nan |
685 rows × 37 columns
df_join_adp
Por ende, debemos desarrollar algo para recuperar esos datos perdidos.
paterno = df_join_adp['Apellido Paterno'].value_counts()
materno = df_join_adp['Apellido Materno'].value_counts()
df_total = pd.merge(paterno, materno, left_index=True, right_index=True, how='inner')
df_total['Total'] = df_total['Apellido Paterno'] + df_total['Apellido Materno']
df_total.sort_values(by=['Total'], ascending=False).head(20)
Apellido Paterno | Apellido Materno | Total | |
---|---|---|---|
GONZALEZ | 8 | 14 | 22 |
DIAZ | 10 | 7 | 17 |
MUNOZ | 6 | 10 | 16 |
PEREZ | 8 | 6 | 14 |
ROJAS | 4 | 9 | 13 |
FERNANDEZ | 5 | 8 | 13 |
RAMIREZ | 6 | 6 | 12 |
GUTIERREZ | 8 | 4 | 12 |
MARTINEZ | 5 | 5 | 10 |
ALVAREZ | 2 | 8 | 10 |
SILVA | 6 | 4 | 10 |
CASTILLO | 5 | 4 | 9 |
CONTRERAS | 4 | 5 | 9 |
REYES | 6 | 2 | 8 |
LOPEZ | 3 | 5 | 8 |
BRAVO | 6 | 2 | 8 |
HERNANDEZ | 7 | 1 | 8 |
YANEZ | 4 | 4 | 8 |
SOTO | 4 | 4 | 8 |
ARAYA | 2 | 5 | 7 |
df_po = pd.merge(adp_conjunto['Total'], df_total['Total'], left_index=True, right_index=True, how='inner')
df_po['var'] = df_po['Total_x'] - df_po['Total_y']
df_po['var %'] = df_po['var']/df_po['Total_x']*100
df_po = df_po.sort_values(by=['var %'], ascending = False)
df_po.head(20)
Total_x | Total_y | var | var % | |
---|---|---|---|---|
VALENZUELA | 7 | 3 | 4 | 57.14 |
VENEGAS | 4 | 2 | 2 | 50.00 |
MALDONADO | 4 | 2 | 2 | 50.00 |
PINTO | 7 | 4 | 3 | 42.86 |
MOLINA | 5 | 3 | 2 | 40.00 |
MEZA | 5 | 3 | 2 | 40.00 |
SEPULVEDA | 11 | 7 | 4 | 36.36 |
LAGOS | 3 | 2 | 1 | 33.33 |
ROMAN | 3 | 2 | 1 | 33.33 |
OSORIO | 3 | 2 | 1 | 33.33 |
SAAVEDRA | 3 | 2 | 1 | 33.33 |
BLANCO | 3 | 2 | 1 | 33.33 |
RIFFO | 3 | 2 | 1 | 33.33 |
ALTAMIRANO | 3 | 2 | 1 | 33.33 |
DEL RIO | 3 | 2 | 1 | 33.33 |
OLIVARES | 3 | 2 | 1 | 33.33 |
MANRIQUEZ | 3 | 2 | 1 | 33.33 |
VIVALLO | 3 | 2 | 1 | 33.33 |
VILLAGRAN | 3 | 2 | 1 | 33.33 |
OYARZUN | 3 | 2 | 1 | 33.33 |
target = df_join_adp[['Apellido Paterno','remuneracionbruta_mensual']].groupby(['Apellido Paterno']).agg(['mean', 'count'])
target2 = target.sort_values(by=[('remuneracionbruta_mensual', 'count')], ascending=False)['remuneracionbruta_mensual']
target3 = df_join_adp[['Apellido Materno','remuneracionbruta_mensual']].groupby(['Apellido Materno']).agg(['mean', 'count'])
target4 = target3.sort_values(by=[('remuneracionbruta_mensual', 'count')], ascending=False)['remuneracionbruta_mensual']
target4
renta_bruta = pd.merge(target2, target4,left_index=True, right_index=True, how='outer').fillna(0)
renta_bruta['Total'] = renta_bruta['count_x'] + renta_bruta['count_y']
renta_bruta['Renta bruta promedio'] = (renta_bruta['mean_x']*renta_bruta['count_x'] + renta_bruta['mean_y']*renta_bruta['count_y'])/(renta_bruta['count_x'] + renta_bruta['count_y'])
renta_bruta[['Renta bruta promedio','Total']].sort_values(by=['Renta bruta promedio'], ascending=False)[renta_bruta['Total'] > 2].head(20)
<ipython-input-699-e64e0aef4668>:12: UserWarning: Boolean Series key will be reindexed to match DataFrame index. renta_bruta[['Renta bruta promedio','Total']].sort_values(by=['Renta bruta promedio'], ascending=False)[renta_bruta['Total'] > 2].head(20)
Renta bruta promedio | Total | |
---|---|---|
GAETE | 7,848,021.33 | 3.00 |
GUZMAN | 7,152,203.50 | 4.00 |
RIVERA | 6,716,003.67 | 3.00 |
CASTRO | 6,681,998.00 | 3.00 |
LAVANDEROS | 6,653,358.25 | 4.00 |
CERDA | 6,652,015.25 | 4.00 |
FUENTES | 6,628,807.00 | 6.00 |
RODRIGUEZ | 6,296,056.14 | 7.00 |
SANCHEZ | 6,264,463.33 | 6.00 |
VERGARA | 6,180,716.57 | 7.00 |
GALLARDO | 6,093,222.75 | 4.00 |
PEREZ | 6,087,530.07 | 14.00 |
CABRERA | 6,083,757.60 | 5.00 |
CACERES | 6,025,944.75 | 4.00 |
MARCHANT | 5,952,306.40 | 5.00 |
RIVEROS | 5,922,865.67 | 3.00 |
BARRIENTOS | 5,909,924.00 | 4.00 |
ESPINOSA | 5,890,816.33 | 3.00 |
MONTES | 5,888,142.00 | 4.00 |
CORREA | 5,860,450.80 | 5.00 |
Ojo que tenemos la cantidad de personal en el ADP menor que lo que en realidad era (798), porque se pierden datos al hacer el match entre nombre, probablemente porque no coinciden exactamente
df_join_adp[['nombre','region','remuliquida_mensual','remuneracionbruta_mensual']].groupby(['region']).agg(['mean', 'count'])
remuliquida_mensual | remuneracionbruta_mensual | |||
---|---|---|---|---|
mean | count | mean | count | |
region | ||||
Region Metropolitana de Santiago | 3,214,155.08 | 178 | 5,816,290.72 | 315 |
Region de Antofagasta | 3,636,305.33 | 9 | 4,299,282.15 | 20 |
Region de Arica y Parinacota | 4,081,404.78 | 9 | 4,636,116.50 | 20 |
Region de Atacama | 3,618,878.50 | 8 | 4,292,194.35 | 20 |
Region de Aysen | 4,830,125.86 | 7 | 5,098,808.53 | 19 |
Region de Coquimbo | 2,795,680.00 | 7 | 4,433,829.30 | 23 |
Region de La Araucania | 3,828,730.62 | 21 | 4,614,231.68 | 37 |
Region de Los Lagos | 3,474,244.50 | 14 | 4,449,558.38 | 29 |
Region de Los Rios | 3,440,838.25 | 4 | 4,341,879.95 | 19 |
Region de Magallanes | 4,201,468.62 | 8 | 5,011,503.23 | 22 |
Region de Nuble | 3,757,790.67 | 9 | 4,176,142.76 | 21 |
Region de OHiggins | 3,715,615.70 | 10 | 4,404,160.95 | 22 |
Region de Tarapaca | 3,985,964.29 | 7 | 4,481,131.10 | 20 |
Region de Valparaiso | 3,552,517.00 | 18 | 4,759,470.38 | 40 |
Region del Biobio | 4,026,201.25 | 12 | 4,809,777.63 | 35 |
Region del Maule | 4,068,628.90 | 10 | 4,507,467.50 | 20 |
Región de Valparaíso | 1,888,403.00 | 1 | 2,447,788.00 | 1 |
Región del Maule | 4,419,695.50 | 2 | 5,497,605.00 | 2 |
df_join_adp.describe()
index | Concurso | Unnamed: 0 | anyo | remuneracionbruta_mensual | remuliquida_mensual | viaticos | |
---|---|---|---|---|---|---|---|
count | 685.00 | 603.00 | 682.00 | 685.00 | 685.00 | 334.00 | 682.00 |
mean | 11,115.05 | 3,985.79 | 104,698.42 | 2,020.00 | 5,145,369.30 | 3,481,677.72 | 24,074.37 |
std | 32,266.30 | 759.07 | 59,462.26 | 0.00 | 1,502,424.72 | 1,766,493.15 | 132,946.86 |
min | 0.00 | 1,068.00 | 1,947.00 | 2,020.00 | 1,456,555.00 | 0.00 | 0.00 |
25% | 169.00 | 3,698.50 | 57,362.75 | 2,020.00 | 4,105,297.00 | 2,950,431.75 | 0.00 |
50% | 345.00 | 4,111.00 | 99,978.50 | 2,020.00 | 4,797,615.00 | 3,808,739.00 | 0.00 |
75% | 518.00 | 4,511.00 | 160,881.75 | 2,020.00 | 5,885,618.00 | 4,564,247.25 | 0.00 |
max | 160,705.00 | 5,075.00 | 197,497.00 | 2,020.00 | 10,715,868.00 | 8,542,479.00 | 2,140,960.00 |
s_profesiones = df_join_adp['tipo_calificacionp'].value_counts()
s_profesiones
ABOGADO 41 INGENIERO COMERCIAL 31 Abogado 25 MEDICO CIRUJANO 24 INGENIERO (A) COMERCIAL 17 .. INGENIEROA (E) EN GESTION INFORMATICA 1 ADMINISTRADOR(A) PUBLICO 1 INGENIEROA (E) EN MINAS 1 INGENIERO COMERCIAL CON MENCION EN ADMINISTRACION DE EMPRESAS 1 DIRECTOR DE SERVICIO 1 Name: tipo_calificacionp, Length: 297, dtype: int64
dict_ = {'ABOGADO': 0, 'ING COMERCIAL': 0, 'ING CIVIL INDUSTRIAL':0, 'MEDICO VETERINARIO': 0,
'AGRÓNOMO': 0, 'MÉDICO CIRUJANO': 0, 'CONTADOR AUDITOR': 0, 'TRABAJADOR SOCIAL': 0,
'EDUCADORA DE PÁRVULOS': 0, 'PSICOLOGO': 0, 'ADMINISTRADOR PUBLICO': 0, 'ARQUITECTO': 0}
dict_2 = {'IN': [], 'OUT': []}
profesiones = list(s_profesiones.index)
out = 0
for i in range (0, len(profesiones)):
profesion = profesiones[i]
n = s_profesiones[i]
if 'abo' in profesion.lower():
dict_2['IN'].append(profesion)
dict_['ABOGADO'] += n
elif 'comercial' in profesion.lower():
dict_['ING COMERCIAL'] += n
dict_2['IN'].append(profesion)
elif 'civil industrial' in profesion.lower() or ('civil' in profesion.lower() and 'industria' in profesion.lower()):
dict_['ING CIVIL INDUSTRIAL'] += n
dict_2['IN'].append(profesion)
elif 'veterinario' in profesion.lower():
dict_['MEDICO VETERINARIO'] += n
dict_2['IN'].append(profesion)
elif 'agronom' in profesion.lower() or 'agrónom' in profesion.lower():
dict_['AGRÓNOMO'] += n
dict_2['IN'].append(profesion)
elif 'cirujano' in profesion.lower() or 'cirugia' in profesion.lower():
dict_['MÉDICO CIRUJANO'] += n
dict_2['IN'].append(profesion)
elif 'contador' in profesion.lower():
dict_['CONTADOR AUDITOR'] += n
dict_2['IN'].append(profesion)
elif 'social' in profesion.lower():
dict_['TRABAJADOR SOCIAL'] += n
dict_2['IN'].append(profesion)
elif 'párvulo' in profesion.lower() or 'parvulo' in profesion.lower():
dict_['EDUCADORA DE PÁRVULOS'] += n
dict_2['IN'].append(profesion)
elif 'psic' in profesion.lower():
dict_['PSICOLOGO'] += n
dict_2['IN'].append(profesion)
elif 'administrad' in profesion.lower() and ('públic' in profesion.lower() or 'public' in profesion.lower()):
dict_['ADMINISTRADOR PUBLICO'] += n
dict_2['IN'].append(profesion)
elif 'arquitect' in profesion.lower():
dict_['ARQUITECTO'] += n
dict_2['IN'].append(profesion)
else:
dict_2['OUT'].append((profesion,n))
out += n
#dict_2['OUT']
#dict_2['IN']
#dict_
#out
tabla_resumen = pd.DataFrame({'Número':dict_})
tabla_resumen['%'] = tabla_resumen['Número']/685*100
tabla_resumen.sort_values(by=['Número'], ascending = False)
Número | % | |
---|---|---|
ABOGADO | 114 | 16.64 |
ING COMERCIAL | 111 | 16.20 |
ING CIVIL INDUSTRIAL | 42 | 6.13 |
MÉDICO CIRUJANO | 38 | 5.55 |
CONTADOR AUDITOR | 30 | 4.38 |
TRABAJADOR SOCIAL | 30 | 4.38 |
ADMINISTRADOR PUBLICO | 26 | 3.80 |
AGRÓNOMO | 25 | 3.65 |
MEDICO VETERINARIO | 18 | 2.63 |
PSICOLOGO | 13 | 1.90 |
ARQUITECTO | 11 | 1.61 |
EDUCADORA DE PÁRVULOS | 10 | 1.46 |
serie = pd.Series(dict_).sort_values(ascending=False)
df_plot_horizontal(serie, 'Profesiones (#>10)',
'Número de empleados ADP', 'Profesiones', 20, interger=True, doble_label=None, size=None)
df_plot_horizontal(df_adp['Servicio'].value_counts(), 'ORGANISMOS',
'Número de empleados ADP', 'Organismos', 20, interger=True, doble_label=None, size=None)
target = pd.merge(df_join_adp, df_instituciones, left_on='organismo_codigo', right_on='Codigo_org', how='inner')
target
index | Concurso | Nivel | Cargo | Servicio | Nombres | Apellidos | Periodo | Inicio | Renovación | nombre | Apellido Paterno | Apellido Materno | Unnamed: 0 | camino | organismo_nombre | organismo_codigo | fecha_publicacion | anyo | Mes | Tipo Estamento | grado_eus | tipo_calificacionp | Tipo cargo | region | asignaciones | Tipo Unidad monetaria | remuneracionbruta_mensual | remuliquida_mensual | diurnas | nocturnas | festivas | fecha_ingreso | fecha_termino | observaciones | enlace | viaticos | idOrg | Organismo | Codigo_padre | Padre_org | Region | Municipalidad | direccion | telefono | url_organismo | url_orgtransparencia | horario_publico | nombre_encargado | num_cuenta | rut | tipo_cuenta | banco | url_sai | fax | Ingresa | obligadorecibir_sai | organismo_autonomo | interopera | tiene_ta | fecha_ta | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 4,957.00 | II | Jefe/a Departamento Funcion: Agencia Nacional ... | Instituto Salud Publica | HERIBERTO ENRIQUE | GARCIA ESCORZA | Nombrado (primer periodo) | 18 feb. 2020 | NaN | GARCIA ESCORZA HERIBERTO ENRIQUE | GARCIA | ESCORZA | 154,846.00 | /2020/Febrero | Instituto de Salud Publica (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Directivo | 3 | QUIMICOFARMACEUTICO | DIRECTIVO | Region Metropolitana de Santiago | (34) | Pesos | 2,297,597.00 | 1,773,017.00 | No tiene | No tiene | No tiene | 18/02/2020 | 18/02/2023 | Alta Direccion Publica RES. TRA N 1651862020 | No | 0.00 | 1052 | Instituto de Salud Pública (ISP) | AO000 | Salud | Región Metropolitana de Santiago | ÑUÑOA | Av. Marathon 1000 Ñuñoa | 56 2 2575 5224 | http://www.ispch.cl/ | http://www.ispch.cl/transparencia | Lunes a Jueves de 08:30 a 17:30 horas Viernes ... | Johans Brgmann | transparencia@ispch.cl | nan | NaN | NaN | NaN | http://www.ispch.cl/formulario_solicitud_trans... | NaN | Ingresa | SÍ | NO | NO | SÍ | 2018/01/01 |
1 | 499 | 3,497.00 | II | Jefe/a Departamento de Salud Ambiental | Instituto Salud Publica | ISEL GERTRUDIS | CORTES NODARSE | Renovado (segundo periodo) | 20 feb. 2017 | 2020-02-21 | CORTES NODARSE ISEL GERTRUDIS | CORTES | NODARSE | 154,860.00 | /2020/Febrero | Instituto de Salud Publica (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Directivo | 3 | LICENCIADO EN QUIMICA | DIRECTIVO | Region Metropolitana de Santiago | (34)(33) | Pesos | 4,706,672.00 | 3,706,351.00 | No tiene | No tiene | No tiene | 20/02/2017 | 20/02/2020 | Alta Direccion Publica RES. TRA N 1651762017 | No | 0.00 | 1052 | Instituto de Salud Pública (ISP) | AO000 | Salud | Región Metropolitana de Santiago | ÑUÑOA | Av. Marathon 1000 Ñuñoa | 56 2 2575 5224 | http://www.ispch.cl/ | http://www.ispch.cl/transparencia | Lunes a Jueves de 08:30 a 17:30 horas Viernes ... | Johans Brgmann | transparencia@ispch.cl | nan | NaN | NaN | NaN | http://www.ispch.cl/formulario_solicitud_trans... | NaN | Ingresa | SÍ | NO | NO | SÍ | 2018/01/01 |
2 | 516 | 3,296.00 | II | Jefe/a Departamento de Salud Ocupacional | Instituto Salud Publica | PATRICIO HERNAN | MIRANDA ASTORGA | Renovado (segundo periodo) | 21 sept. 2016 | 2019-09-22 | MIRANDA ASTORGA PATRICIO HERNAN | MIRANDA | ASTORGA | 154,825.00 | /2020/Febrero | Instituto de Salud Publica (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Directivo | 3 | MEDICO CIRUJANO | DIRECTIVO | Region Metropolitana de Santiago | (34)(33) | Pesos | 4,706,672.00 | 3,756,408.00 | No tiene | No tiene | No tiene | 22/09/2019 | 22/09/2022 | Resolucion Exenta RA 1656422019 1ra Renovacion | No | 0.00 | 1052 | Instituto de Salud Pública (ISP) | AO000 | Salud | Región Metropolitana de Santiago | ÑUÑOA | Av. Marathon 1000 Ñuñoa | 56 2 2575 5224 | http://www.ispch.cl/ | http://www.ispch.cl/transparencia | Lunes a Jueves de 08:30 a 17:30 horas Viernes ... | Johans Brgmann | transparencia@ispch.cl | nan | NaN | NaN | NaN | http://www.ispch.cl/formulario_solicitud_trans... | NaN | Ingresa | SÍ | NO | NO | SÍ | 2018/01/01 |
3 | 518 | 3,375.00 | II | Jefe/a Departamento Funcion: Laboratorio Biome... | Instituto Salud Publica | MARIA JUDITH | MORA RIQUELME | Renovado (segundo periodo) | 1 sept. 2016 | 2019-09-02 | MORA RIQUELME MARIA JUDITH | MORA | RIQUELME | 154,821.00 | /2020/Febrero | Instituto de Salud Publica (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Directivo | 3 | MEDICO VETERINARIO | DIRECTIVO | Region Metropolitana de Santiago | (219)(34)(33) | Pesos | 5,799,146.00 | 4,575,302.00 | No tiene | No tiene | No tiene | 01/09/2016 | 02/09/2022 | Alta Direccion Res. TRA N 165732016 | No | 0.00 | 1052 | Instituto de Salud Pública (ISP) | AO000 | Salud | Región Metropolitana de Santiago | ÑUÑOA | Av. Marathon 1000 Ñuñoa | 56 2 2575 5224 | http://www.ispch.cl/ | http://www.ispch.cl/transparencia | Lunes a Jueves de 08:30 a 17:30 horas Viernes ... | Johans Brgmann | transparencia@ispch.cl | nan | NaN | NaN | NaN | http://www.ispch.cl/formulario_solicitud_trans... | NaN | Ingresa | SÍ | NO | NO | SÍ | 2018/01/01 |
4 | 160705 | nan | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | QUINTANILLA ASENCIO CARLOS | QUINTANILLA | ASENCIO | 154,812.00 | /2020/Febrero | Instituto de Salud Publica (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Directivo | 3 | INGENIERO COMERCIAL | DIRECTIVO | Region Metropolitana de Santiago | (34) | Pesos | 4,994,016.00 | 3,458,927.00 | No tiene | No tiene | No tiene | 01/01/2019 | 01/01/2022 | Alta Direccion Publica RES. TRA N 165022019 | No | 0.00 | 1052 | Instituto de Salud Pública (ISP) | AO000 | Salud | Región Metropolitana de Santiago | ÑUÑOA | Av. Marathon 1000 Ñuñoa | 56 2 2575 5224 | http://www.ispch.cl/ | http://www.ispch.cl/transparencia | Lunes a Jueves de 08:30 a 17:30 horas Viernes ... | Johans Brgmann | transparencia@ispch.cl | nan | NaN | NaN | NaN | http://www.ispch.cl/formulario_solicitud_trans... | NaN | Ingresa | SÍ | NO | NO | SÍ | 2018/01/01 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
680 | 150688 | nan | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NUNEZ CARRENO BERNARDITA DEL PILAR | NUNEZ | CARRENO | 123,246.00 | /Educacion/Ano 2020/Febrero | Municipalidad de Huechuraba | MU109 | 2020/10/20 | 2020 | Febrero | Docentedirectivo | Jornada de 44 horas | Docente Educacion General Basica | JEFE U.T.P. EN ESCUELA ERNESTO YANEZ | Region Metropolitana de Santiago | (107)(101) | Pesos | 2,096,116.00 | 1,852,294.00 | No tiene | No tiene | No tiene | 01/12/1981 | 29/02/2020 | Alta Direccion Publica | No | 0.00 | 555 | Municipalidad de Huechuraba | MU000 | Municipios de R. Metropolitana de Santiago | Región Metropolitana de Santiago | HUECHURUBA | Premio Nobel Nº 5555 | (02) 719 7000 | http://www.huechuraba.cl | http://transparencia.huechuraba.cl/ | 8:30 a 17:30 horas | NaN | transparencia@huechuraba.cl | nan | NaN | NaN | NaN | http://transparencia.huechuraba.cl/formulario/... | NaN | Ingresa | SÍ | NO | NO | SÍ | 2018/01/01 |
681 | 150723 | nan | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | HERNANDEZ VALDIVIA NICOLE LIZZETH | HERNANDEZ | VALDIVIA | 123,281.00 | /Educacion/Ano 2020/Febrero | Municipalidad de Huechuraba | MU109 | 2020/10/20 | 2020 | Febrero | Docentedirectivo | Jornada de 44 horas | Docente Diferencial | DIRECTORA ESCUELA LAS CANTERAS | Region Metropolitana de Santiago | (125)(107)(101) | Pesos | 2,470,188.00 | 1,564,446.00 | No tiene | No tiene | No tiene | 01/03/2018 | 28/02/2023 | Alta Direccion Publica | No | 0.00 | 555 | Municipalidad de Huechuraba | MU000 | Municipios de R. Metropolitana de Santiago | Región Metropolitana de Santiago | HUECHURUBA | Premio Nobel Nº 5555 | (02) 719 7000 | http://www.huechuraba.cl | http://transparencia.huechuraba.cl/ | 8:30 a 17:30 horas | NaN | transparencia@huechuraba.cl | nan | NaN | NaN | NaN | http://transparencia.huechuraba.cl/formulario/... | NaN | Ingresa | SÍ | NO | NO | SÍ | 2018/01/01 |
682 | 150727 | nan | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | HERNANDEZ ANTINAO LAURA ANDREA | HERNANDEZ | ANTINAO | 123,285.00 | /Educacion/Ano 2020/Febrero | Municipalidad de Huechuraba | MU109 | 2020/10/20 | 2020 | Febrero | Docentedirectivo | Jornada de 44 horas | Docente Basica | DIRECTORA ESCUELA SANTA VICTORIA | Region Metropolitana de Santiago | (124)(125)(107)(101) | Pesos | 2,318,462.00 | 1,485,382.00 | No tiene | No tiene | No tiene | 01/02/2016 | 31/01/2021 | Alta Direccion Publica | No | 0.00 | 555 | Municipalidad de Huechuraba | MU000 | Municipios de R. Metropolitana de Santiago | Región Metropolitana de Santiago | HUECHURUBA | Premio Nobel Nº 5555 | (02) 719 7000 | http://www.huechuraba.cl | http://transparencia.huechuraba.cl/ | 8:30 a 17:30 horas | NaN | transparencia@huechuraba.cl | nan | NaN | NaN | NaN | http://transparencia.huechuraba.cl/formulario/... | NaN | Ingresa | SÍ | NO | NO | SÍ | 2018/01/01 |
683 | 1 | 4,557.00 | II | Director/a Hospital de Curico | Servicio de Salud Maule | MAURO JOAN | SALINAS CORTES | Nombrado (primer periodo) | 13 may. 2019 | NaN | SALINAS CORTES MAURO JOAN | SALINAS | CORTES | nan | /2020/Febrero | Hospital de Curicó | AO083 | 2020/10/01 | 2020 | Febrero | Directivo | 3 | INGENIERO (A) CIVIL INDUSTRIAL | DIRECTIVO ADP 2º NIVELK4:K7K4:K43 | Región del Maule | (34) | Pesos | 5,935,327.00 | 4,725,780.00 | No tiene | No tiene | No tiene | 13/05/2019 | 13/05/2022 | Sin observaciones | a href=https:www.declaracionjurada.cldipindex.... | nan | 914 | Hospital de Curicó | AO000 | Salud | Región del Maule | CURICÓ | Chacabuco N121 Curicó | 752286081 | http://www.hospitalcurico.cl | http://webhosting.redsalud.gov.cl/transparenci... | 08:30 a 17:00 hrs. | Angelina Carreño | transparenciacurico@gmail.com | nan | NaN | Cuenta Corriente | Bancoestado | http://www.hospitalcurico.cl/web/solicitud_inf... | NaN | Ingresa | SÍ | NO | NO | SÍ | 2018/03/12 |
684 | 2 | 3,850.00 | II | Subdirector/a Administrativo/a Hospital de Curico | Servicio de Salud Maule | EDUARDO AGUSTIN | SOTO ARAYA | Nombrado (primer periodo) | 1 may. 2018 | NaN | SOTO ARAYA EDUARDO AGUSTIN | SOTO | ARAYA | nan | /2020/Febrero | Hospital de Curicó | AO083 | 2020/10/01 | 2020 | Febrero | Profesional | 4 | INGENIERO COMERCIAL | SUBDIRECTOR ADMINISTRATIVO | Región del Maule | (34) | Pesos | 5,059,883.00 | 4,113,611.00 | No tiene | No tiene | No tiene | 01/05/2018 | 01/05/2021 | Sin observaciones | a href=https:www.declaracionjurada.cldipindex.... | nan | 914 | Hospital de Curicó | AO000 | Salud | Región del Maule | CURICÓ | Chacabuco N121 Curicó | 752286081 | http://www.hospitalcurico.cl | http://webhosting.redsalud.gov.cl/transparenci... | 08:30 a 17:00 hrs. | Angelina Carreño | transparenciacurico@gmail.com | nan | NaN | Cuenta Corriente | Bancoestado | http://www.hospitalcurico.cl/web/solicitud_inf... | NaN | Ingresa | SÍ | NO | NO | SÍ | 2018/03/12 |
685 rows × 62 columns
pd.options.display.float_format = '{:,.2f}'.format
target2 = target[['Padre_org','remuliquida_mensual','remuneracionbruta_mensual']].groupby(['Padre_org']).agg(['mean', 'count'])
target2 = target2.sort_values(by=[('remuneracionbruta_mensual', 'mean')], ascending=False)['remuneracionbruta_mensual']
target2.columns = ['Remuneración bruta promedio', '#']
target2
Remuneración bruta promedio | # | |
---|---|---|
Padre_org | ||
Superintendencia de Servicios Sanitarios | 9,041,683.00 | 1 |
Minería | 7,358,836.83 | 6 |
Transportes y Telecomunicaciones | 6,162,352.50 | 2 |
Economía Fomento y Turismo | 6,162,297.29 | 49 |
Energía | 6,123,668.05 | 22 |
Relaciones Exteriores | 5,856,443.67 | 3 |
Agricultura | 5,409,021.50 | 42 |
Salud | 5,364,149.25 | 144 |
Justicia | 5,295,354.90 | 52 |
Obras Públicas | 5,292,558.27 | 26 |
Vivienda y Urbanismo | 5,157,097.36 | 11 |
Trabajo y Previsión Social | 5,105,981.73 | 88 |
Medio Ambiente | 5,045,493.58 | 24 |
Hacienda | 4,952,937.88 | 33 |
Educación | 4,771,017.07 | 72 |
Interior y Seguridad Pública | 4,549,288.37 | 27 |
Deporte | 4,523,304.22 | 9 |
Culturas y las Artes | 4,435,984.88 | 8 |
Defensa Nacional | 4,319,455.81 | 16 |
Desarrollo Social | 4,183,070.97 | 29 |
La Mujer y Equidad de Género | 4,022,368.92 | 13 |
Municipios de R. Metropolitana de Santiago | 2,048,570.38 | 8 |
pd.options.display.float_format = '{:,.2f}'.format
target2 = target[['Padre_org','remuliquida_mensual','remuneracionbruta_mensual']].groupby(['Padre_org']).agg(['mean', 'count'])
target2 = target2.sort_values(by=[('remuneracionbruta_mensual', 'count')], ascending=False)['remuneracionbruta_mensual']
target2.columns = ['Remuneración bruta promedio', '#']
target2=target2.reindex(columns=['#','Remuneración bruta promedio'])
target2
# | Remuneración bruta promedio | |
---|---|---|
Padre_org | ||
Salud | 144 | 5,364,149.25 |
Trabajo y Previsión Social | 88 | 5,105,981.73 |
Educación | 72 | 4,771,017.07 |
Justicia | 52 | 5,295,354.90 |
Economía Fomento y Turismo | 49 | 6,162,297.29 |
Agricultura | 42 | 5,409,021.50 |
Hacienda | 33 | 4,952,937.88 |
Desarrollo Social | 29 | 4,183,070.97 |
Interior y Seguridad Pública | 27 | 4,549,288.37 |
Obras Públicas | 26 | 5,292,558.27 |
Medio Ambiente | 24 | 5,045,493.58 |
Energía | 22 | 6,123,668.05 |
Defensa Nacional | 16 | 4,319,455.81 |
La Mujer y Equidad de Género | 13 | 4,022,368.92 |
Vivienda y Urbanismo | 11 | 5,157,097.36 |
Deporte | 9 | 4,523,304.22 |
Municipios de R. Metropolitana de Santiago | 8 | 2,048,570.38 |
Culturas y las Artes | 8 | 4,435,984.88 |
Minería | 6 | 7,358,836.83 |
Relaciones Exteriores | 3 | 5,856,443.67 |
Transportes y Telecomunicaciones | 2 | 6,162,352.50 |
Superintendencia de Servicios Sanitarios | 1 | 9,041,683.00 |
target2 = target[['Organismo','remuliquida_mensual','remuneracionbruta_mensual']].groupby(['Organismo']).agg(['mean', 'count'])
target2 = target2.sort_values(by=[('remuneracionbruta_mensual', 'mean')], ascending=False)['remuneracionbruta_mensual']
target2.columns = ['Remuneración bruta promedio', '#']
target2.head(20)
Remuneración bruta promedio | # | |
---|---|---|
Organismo | ||
Superintendencia de Servicios Sanitarios (SISS) | 9,041,683.00 | 1 |
Superintendencia de Salud (SdS) | 8,980,388.33 | 3 |
Superintendencia de Pensiones (SP) | 8,908,218.40 | 10 |
SERVIU Región de Coquimbo | 8,694,674.00 | 1 |
Servicio Nacional de Geología y Minería (SERNAGEOMIN) | 8,683,174.00 | 1 |
Comisión Nacional de Energía (CNE) | 8,446,368.33 | 3 |
Superintendencia de Seguridad Social (SUSESO) | 8,268,126.75 | 4 |
Superintendencia de Insolvencia y Reemprendimiento | 7,900,108.00 | 4 |
Superintendencia del Medio Ambiente (SMA) | 7,896,340.75 | 4 |
Fiscalía Nacional Económica (FNE) | 7,816,690.00 | 7 |
Superintendencia de Casinos de Juego (SCJ) | 7,758,992.67 | 3 |
Dirección de Educación Pública | 7,604,170.00 | 1 |
Instituto Nacional del Cáncer | 7,599,021.00 | 1 |
Hospital Base de Valdivia | 7,597,069.00 | 1 |
Defensoría Penal Pública (DPP) | 7,585,520.43 | 7 |
Hospital Regional de Rancagua | 7,578,339.00 | 1 |
Unidad de Análisis Financiero | 7,497,701.75 | 4 |
Instituto Nacional de Geriatría (ING) | 7,476,371.00 | 1 |
Instituto Nacional de Propiedad Industrial (INAPI) | 7,472,538.00 | 5 |
Agencia de Promoción de la Inversión Extranjera | 7,427,369.33 | 6 |
pd.options.display.float_format = '{:,.2f}'.format
target2 = target[['Organismo','remuliquida_mensual','remuneracionbruta_mensual']].groupby(['Organismo']).agg(['mean', 'count'])
target2 = target2.sort_values(by=[('remuneracionbruta_mensual', 'count')], ascending=False)['remuneracionbruta_mensual']
target2.columns = ['Remuneración bruta promedio', '#']
target2=target2.reindex(columns=['#','Remuneración bruta promedio'])
target2.head(20)
# | Remuneración bruta promedio | |
---|---|---|
Organismo | ||
Instituto de Previsión Social (IPS) | 29 | 4,040,581.07 |
Instituto de Desarrollo Agropecuario (INDAP) | 24 | 5,491,059.67 |
Servicio Nacional para la Prevención y Rehabilitación del Consumo de Drogas y Alcohol (SENDA) | 21 | 4,573,577.29 |
Servicio Nacional de Capacitación y Empleo (SENCE) | 21 | 4,369,265.48 |
Servicio de Evaluación Ambiental (SEA) | 20 | 4,475,324.15 |
Dirección del Trabajo (DT) | 19 | 4,647,009.79 |
Servicio Nacional de Pesca y Acuicultura (SERNAPESCA) | 19 | 4,935,424.79 |
Superintendencia de Educación | 19 | 5,615,377.58 |
Tesorería General de la República (TGR) | 18 | 4,091,645.00 |
Servicio de Registro Civil e Identificación | 18 | 5,014,968.78 |
Junta Nacional de Auxilio Escolar y Becas (JUNAEB) | 17 | 4,137,739.76 |
Superintendencia de Electricidad y Combustibles (SEC) | 17 | 5,959,995.24 |
Servicio Médico Legal (SML) | 17 | 5,655,631.06 |
Servicio Agrícola y Ganadero (SAG) | 16 | 5,145,232.06 |
Junta Nacional de Jardines Infantiles (JUNJI) | 13 | 3,808,122.69 |
Servicio Nacional de la Mujer y la Equidad de Género (SERNAMEG) | 13 | 4,022,368.92 |
Instituto Nacional de la Juventud (INJUV) | 11 | 3,321,875.09 |
Servicio Nacional de Menores (SENAME) | 10 | 3,584,464.60 |
Superintendencia de Pensiones (SP) | 10 | 8,908,218.40 |
Instituto Nacional del Deporte (IND) | 9 | 4,523,304.22 |