# Librerias
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['figure.dpi']= 100
import time
import csv
#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()
label2 = diff_asc['Total'].head(n_categories).values
label3 = diff_asc['Caso ideal'].head(n_categories).values
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.
#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)]
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]
df_contrata = pd.read_csv('Febrero2020/PersonalContrata.csv', index_col=0)
df_contrata['nombre'] = df_contrata['nombre'].str.upper()
df_contrata
camino | organismo_nombre | organismo_codigo | fecha_publicacion | anyo | Mes | Tipo Estamento | nombre | grado_eus | tipo_calificacionp | ... | remuneracionbruta_mensual | remuliquida_mensual | diurnas | nocturnas | festivas | fecha_ingreso | fecha_termino | observaciones | enlace | viaticos | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
19316 | /Municipalidad/2020/Mes de Enero | Municipalidad de Llanquihue | MU142 | 2020/03/13 | 2020 | Febrero | Auxiliar | GUERRERO VILLEGAS ROBERTO MAURICIO | 18 | CHOFER | ... | 651,695.00 | nan | $68,525 34.00hrs | $50,789 21.00hrs | No tiene | 20/06/2019 | 31/12/2020 | Sin observaciones | No | nan |
19317 | /Municipalidad/2020/Mes de Enero | Municipalidad de Llanquihue | MU142 | 2020/03/13 | 2020 | Febrero | Técnico | VENEGAS ZEPEDA CESAR IVAN | 12 | TECNICO UNIVERSITARIO EN DIBUJO INDUSTRI | ... | 1,148,946.00 | nan | No tiene | No tiene | No tiene | 01/01/2015 | 31/12/2020 | Sin observaciones | No | nan |
19318 | /Municipalidad/2020/Mes de Enero | Municipalidad de Llanquihue | MU142 | 2020/03/13 | 2020 | Febrero | Técnico | VARGAS TORRES VICTOR | 10 | TECNICO | ... | 1,253,194.00 | nan | $34,355 6.00hrs | No tiene | No tiene | 01/03/2016 | 31/12/2020 | Sin observaciones | No | nan |
19319 | /Municipalidad/2020/Mes de Enero | Municipalidad de Llanquihue | MU142 | 2020/03/13 | 2020 | Febrero | Administrativo | SOTO ROMERO INGRID VERONICA | 14 | ASISTENTE SOCIAL | ... | 879,719.00 | nan | $79,083 27.00hrs | $49,207 14.00hrs | No tiene | 01/01/2016 | 31/12/2020 | Sin observaciones | No | nan |
19320 | /Municipalidad/2020/Mes de Enero | Municipalidad de Llanquihue | MU142 | 2020/03/13 | 2020 | Febrero | Auxiliar | RODRIGUEZ TENORIO PATRICIO ERNESTO | 16 | ENCARGADO EMERGENCIA Y PROTECCION CIVIL | ... | 735,414.00 | nan | $19,566 8.00hrs | $79,243 27.00hrs | No tiene | 01/08/2016 | 31/12/2020 | Sin observaciones | No | nan |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
37215 | /2020/Febrero | Instituto de Salud Pública (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Profesional | LINEROS SALINAS MICHELLE MARIANNE | 12 | MEDICO VETERINARIO | ... | 1,712,176.00 | 1,351,381.00 | No tiene | No tiene | No tiene | 01/01/2020 | 31/12/2020 | Sin observaciones | No | 0.00 |
37216 | /2020/Febrero | Instituto de Salud Pública (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Profesional | LIMA PASSOS ANDRE | 12 | INGENIERO INFORMATICA | ... | 1,644,059.00 | 1,313,285.00 | No tiene | No tiene | No tiene | 01/01/2020 | 31/03/2020 | Sin observaciones | No | 0.00 |
37217 | /2020/Febrero | Instituto de Salud Pública (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Profesional | LEYTON PERALTA NICOL KARINA | 12 | QUIMICOFARMACEUTICO | ... | 1,644,059.00 | 1,303,592.00 | No tiene | No tiene | No tiene | 01/01/2020 | 31/12/2020 | Sin observaciones | No | 0.00 |
37218 | /2020/Febrero | Instituto de Salud Pública (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Auxiliar | LEYTON LEYTON RONY | 23 | ENSEÑANZA MEDIA COMPLETA | ... | 539,201.00 | 416,005.00 | $36,433 16.00hrs | No tiene | $27,324 10.00hrs | 01/01/2020 | 31/03/2020 | Sin observaciones | No | 0.00 |
37219 | /2020/Febrero | Instituto de Salud Pública (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Auxiliar | LEYTON LEYTON JIMMY | 23 | ENSEÑANZA MEDIA COMPLETA | ... | 593,426.00 | 465,449.00 | No tiene | No tiene | No tiene | 01/01/2020 | 13/02/2020 | Sin observaciones | No | 0.00 |
309683 rows × 24 columns
df_instituciones = pd.read_csv('Acronimos Organismos.csv', index_col=0, encoding="ISO-8859-1", delimiter =';')
df_contrata.describe()
anyo | remuneracionbruta_mensual | remuliquida_mensual | viaticos | |
---|---|---|---|---|
count | 300,194.00 | 300,194.00 | 179,727.00 | 30,416.00 |
mean | 2,020.00 | 1,233,553.19 | 828,198.68 | 18,410.95 |
std | 0.00 | 913,193.04 | 782,365.36 | 89,162.90 |
min | 2,020.00 | 0.00 | 0.00 | 0.00 |
25% | 2,020.00 | 586,983.50 | 355,216.50 | 0.00 |
50% | 2,020.00 | 1,000,538.00 | 655,486.00 | 0.00 |
75% | 2,020.00 | 1,681,500.00 | 1,121,919.50 | 0.00 |
max | 2,020.00 | 43,378,270.00 | 43,378,270.00 | 5,439,379.00 |
df_contrata[df_contrata['grado_eus'] == 'Jornada de 19 Horas']
camino | organismo_nombre | organismo_codigo | fecha_publicacion | anyo | Mes | Tipo Estamento | nombre | 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 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
76923 | /Educación/Docente Contrata 2020/2020/Febrero | Municipalidad de Traiguén | MU327 | 2020/10/15 | 2020 | Febrero | Docente | OSSES LOPEZ ALVARO JOSE | Jornada de 19 Horas | Profesor de Inglés | DOCENTE EN LA ESCUELA EMILIA ROMAGNA DOCENTE... | Región de La Araucanía | (37)(61) | Pesos | 6,620,605.00 | 507,221.00 | No tiene | No tiene | No tiene | 01/03/2019 | 29/02/2020 | 10 hrs. SEP en Escuela Emilia Romagna 9 hrs. ... | No | nan |
#Remove tildes
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'))
/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/frame.py:3069: 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 self[k1] = value[k2]
df_contrata = df_contrata.drop_duplicates(subset=['nombre', 'organismo_codigo', 'fecha_ingreso'], keep="last")
apellidos = df_contrata['nombre'].str.split(pat=' ', n=-1, expand=True)
df_contrata['Apellido Paterno'] = apellidos[0]
df_contrata['Apellido Materno'] = apellidos[1]
df_contrata
<ipython-input-97-57b06754361e>:3: 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_contrata['Apellido Paterno'] = apellidos[0] <ipython-input-97-57b06754361e>:4: 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_contrata['Apellido Materno'] = apellidos[1]
camino | organismo_nombre | organismo_codigo | fecha_publicacion | anyo | Mes | Tipo Estamento | nombre | grado_eus | tipo_calificacionp | ... | diurnas | nocturnas | festivas | fecha_ingreso | fecha_termino | observaciones | enlace | viaticos | Apellido Paterno | Apellido Materno | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
22912 | /Municipalidad/2020/Mes de Febrero | Municipalidad de Llanquihue | MU142 | 2020/03/13 | 2020 | Febrero | Auxiliar | AGUERO VARGAS HERIBERTO SEGUNDO | 16 | CHOFER | ... | $39,133 16.00hrs | $93,918 32.00hrs | No tiene | 01/01/2015 | 31/12/2020 | Sin observaciones | No | NaN | AGUERO | VARGAS |
22913 | /Municipalidad/2020/Mes de Febrero | Municipalidad de Llanquihue | MU142 | 2020/03/13 | 2020 | Febrero | Profesional | AGUILAR SOTO PABLO JAVIER | 8 | INGENIERO CONSTRUCCION | ... | $75,277 9.00hrs | No tiene | No tiene | 20/04/2015 | 31/12/2020 | Sin observaciones | No | NaN | AGUILAR | SOTO |
22914 | /Municipalidad/2020/Mes de Febrero | Municipalidad de Llanquihue | MU142 | 2020/03/13 | 2020 | Febrero | Auxiliar | ALVARADO GONZALEZ MAURICIO ROLANDO | 16 | CHOFER | ... | $80,711 33.00hrs | $208,381 71.00hrs | No tiene | 01/05/2017 | 31/12/2020 | Sin observaciones | No | NaN | ALVARADO | GONZALEZ |
22915 | /Municipalidad/2020/Mes de Febrero | Municipalidad de Llanquihue | MU142 | 2020/03/13 | 2020 | Febrero | Administrativo | ALVARADO OJEDA JACQUELINE DEL ROSARIO | 13 | TECNICO NIVEL SUPERIOR ADMINISTRACION PU | ... | $37,353 11.00hrs | $12,225 3.00hrs | No tiene | 01/01/2015 | 31/12/2020 | Sin observaciones | No | NaN | ALVARADO | OJEDA |
22916 | /Municipalidad/2020/Mes de Febrero | Municipalidad de Llanquihue | MU142 | 2020/03/13 | 2020 | Febrero | Administrativo | ANDRADE PINOL MARCIA ALEJANDRA | 13 | TECNICO UNIVERSITARIO EN ADMINISTRACION | ... | $54,331 16.00hrs | No tiene | No tiene | 01/03/2016 | 31/12/2020 | Sin observaciones | No | NaN | ANDRADE | PINOL |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
37215 | /2020/Febrero | Instituto de Salud Pública (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Profesional | LINEROS SALINAS MICHELLE MARIANNE | 12 | MEDICO VETERINARIO | ... | No tiene | No tiene | No tiene | 01/01/2020 | 31/12/2020 | Sin observaciones | No | 0.0 | LINEROS | SALINAS |
37216 | /2020/Febrero | Instituto de Salud Pública (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Profesional | LIMA PASSOS ANDRE | 12 | INGENIERO INFORMATICA | ... | No tiene | No tiene | No tiene | 01/01/2020 | 31/03/2020 | Sin observaciones | No | 0.0 | LIMA | PASSOS |
37217 | /2020/Febrero | Instituto de Salud Pública (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Profesional | LEYTON PERALTA NICOL KARINA | 12 | QUIMICOFARMACEUTICO | ... | No tiene | No tiene | No tiene | 01/01/2020 | 31/12/2020 | Sin observaciones | No | 0.0 | LEYTON | PERALTA |
37218 | /2020/Febrero | Instituto de Salud Pública (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Auxiliar | LEYTON LEYTON RONY | 23 | ENSEÑANZA MEDIA COMPLETA | ... | $36,433 16.00hrs | No tiene | $27,324 10.00hrs | 01/01/2020 | 31/03/2020 | Sin observaciones | No | 0.0 | LEYTON | LEYTON |
37219 | /2020/Febrero | Instituto de Salud Pública (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Auxiliar | LEYTON LEYTON JIMMY | 23 | ENSEÑANZA MEDIA COMPLETA | ... | No tiene | No tiene | No tiene | 01/01/2020 | 13/02/2020 | Sin observaciones | No | 0.0 | LEYTON | LEYTON |
300194 rows × 26 columns
paternos = df_contrata['Apellido Paterno'].value_counts()
maternos = df_contrata['Apellido Materno'].value_counts()
df_contrata_total = pd.merge(paternos, maternos, left_index=True, right_index=True, how='inner')
df_contrata_total['Total'] = df_contrata_total['Apellido Paterno'] + df_contrata_total['Apellido Materno']
df_contrata_total['Porcentaje'] = (df_contrata_total['Total']/df_contrata_total['Total'].sum())*100
df_contrata_total = df_contrata_total.sort_values(by=['Total'], ascending=False)
df_contrata_total = df_contrata_total[['Total', 'Apellido Paterno', 'Apellido Materno', 'Porcentaje']]
df_contrata_total.head(20)
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
GONZALEZ | 11514 | 5670 | 5844 | 1.981016 |
MUÑOZ | 7760 | 3913 | 3847 | 1.335130 |
ROJAS | 7020 | 3467 | 3553 | 1.207811 |
DIAZ | 6421 | 3200 | 3221 | 1.104751 |
PEREZ | 5282 | 2624 | 2658 | 0.908783 |
SOTO | 5016 | 2469 | 2547 | 0.863017 |
CONTRERAS | 4707 | 2274 | 2433 | 0.809852 |
MORALES | 4233 | 2157 | 2076 | 0.728299 |
SILVA | 4228 | 2183 | 2045 | 0.727439 |
FUENTES | 4113 | 2025 | 2088 | 0.707653 |
RODRIGUEZ | 4028 | 2019 | 2009 | 0.693029 |
SEPULVEDA | 3972 | 1968 | 2004 | 0.683394 |
TORRES | 3950 | 1959 | 1991 | 0.679608 |
CASTILLO | 3866 | 1866 | 2000 | 0.665156 |
MARTINEZ | 3834 | 1946 | 1888 | 0.659650 |
LOPEZ | 3748 | 1854 | 1894 | 0.644854 |
ARAYA | 3729 | 1853 | 1876 | 0.641585 |
FLORES | 3712 | 1847 | 1865 | 0.638660 |
ESPINOZA | 3690 | 1867 | 1823 | 0.634875 |
HERNANDEZ | 3654 | 1900 | 1754 | 0.628681 |
df_contrata_total[df_contrata_total.index.isin(apellidos_mapuches_painemal)]
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
COLLAO | 293 | 152 | 141 | 0.050686 |
PINA | 224 | 114 | 110 | 0.038749 |
VILLALON | 169 | 84 | 85 | 0.029235 |
MILLAN | 164 | 86 | 78 | 0.028370 |
CHIGUAY | 109 | 44 | 65 | 0.018856 |
... | ... | ... | ... | ... |
LLANCAPI | 2 | 1 | 1 | 0.000346 |
RAPI | 2 | 1 | 1 | 0.000346 |
EPUIN | 2 | 1 | 1 | 0.000346 |
IMIGUALA | 2 | 1 | 1 | 0.000346 |
LLANQUEN | 2 | 1 | 1 | 0.000346 |
1286 rows × 4 columns
df_contrata_total[df_contrata_total.index.isin(apellidos_mapuches_amigos)]
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
MELLA | 682 | 328 | 354 | 0.117978 |
COLLAO | 293 | 152 | 141 | 0.050686 |
PINA | 224 | 114 | 110 | 0.038749 |
MILLAN | 164 | 86 | 78 | 0.028370 |
MILLAR | 161 | 83 | 78 | 0.027851 |
... | ... | ... | ... | ... |
LLANCAPI | 2 | 1 | 1 | 0.000346 |
RAPI | 2 | 1 | 1 | 0.000346 |
EPUIN | 2 | 1 | 1 | 0.000346 |
IMIGUALA | 2 | 1 | 1 | 0.000346 |
LLANQUEN | 2 | 1 | 1 | 0.000346 |
1265 rows × 4 columns
df_contrata_total[df_contrata_total.index.isin(apellidos_aymaras)]
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
MAMANI | 210 | 96 | 114 | 0.036328 |
QUISPE | 87 | 41 | 46 | 0.015050 |
CHOQUE | 73 | 30 | 43 | 0.012628 |
AMARO | 71 | 34 | 37 | 0.012282 |
MOLLO | 58 | 29 | 29 | 0.010033 |
HUANCA | 47 | 19 | 28 | 0.008130 |
ARO | 44 | 22 | 22 | 0.007611 |
CONDORI | 39 | 17 | 22 | 0.006747 |
CALLE | 38 | 7 | 31 | 0.006574 |
COLQUE | 31 | 21 | 10 | 0.005363 |
MAITA | 25 | 8 | 17 | 0.004325 |
CHALLAPA | 23 | 15 | 8 | 0.003979 |
TICONA | 18 | 3 | 15 | 0.003114 |
LAURA | 15 | 6 | 9 | 0.002595 |
CHURA | 14 | 9 | 5 | 0.002422 |
AYCA | 13 | 6 | 7 | 0.002249 |
TANCARA | 13 | 4 | 9 | 0.002249 |
APAZA | 12 | 4 | 8 | 0.002076 |
YUPANQUI | 11 | 9 | 2 | 0.001903 |
YUCRA | 10 | 5 | 5 | 0.001730 |
GUARACHI | 9 | 4 | 5 | 0.001557 |
TITO | 9 | 4 | 5 | 0.001557 |
COPA | 9 | 5 | 4 | 0.001557 |
CUTIPA | 8 | 3 | 5 | 0.001384 |
ALI | 8 | 3 | 5 | 0.001384 |
NINA | 8 | 4 | 4 | 0.001384 |
BEDOYA | 7 | 3 | 4 | 0.001211 |
ALANOCA | 7 | 4 | 3 | 0.001211 |
PACO | 7 | 4 | 3 | 0.001211 |
POMA | 7 | 4 | 3 | 0.001211 |
CARI | 7 | 4 | 3 | 0.001211 |
CHAMBILLA | 6 | 3 | 3 | 0.001038 |
MARCA | 6 | 4 | 2 | 0.001038 |
CHAMBI | 5 | 1 | 4 | 0.000865 |
CACHI | 5 | 3 | 2 | 0.000865 |
POSADA | 5 | 3 | 2 | 0.000865 |
AJATA | 5 | 4 | 1 | 0.000865 |
APALA | 4 | 1 | 3 | 0.000692 |
CHOQUEHUANCA | 4 | 2 | 2 | 0.000692 |
LAIME | 4 | 3 | 1 | 0.000692 |
PAULO | 4 | 3 | 1 | 0.000692 |
CHUQUIMIA | 4 | 3 | 1 | 0.000692 |
LLUSCO | 3 | 1 | 2 | 0.000519 |
CHIPANA | 3 | 2 | 1 | 0.000519 |
QUELCA | 3 | 2 | 1 | 0.000519 |
CANQUI | 3 | 2 | 1 | 0.000519 |
SAIRE | 2 | 1 | 1 | 0.000346 |
CATARI | 2 | 1 | 1 | 0.000346 |
df_contrata_total[df_contrata_total.index.isin(apellidos_atacameños)]
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
ALDAY | 54 | 26 | 28 | 0.009341 |
YUFLA | 3 | 2 | 1 | 0.000519 |
SANDON | 2 | 1 | 1 | 0.000346 |
df_contrata_total[df_contrata_total.index.isin(apellidos_palestinos)]
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
HASBUN | 19 | 9 | 10 | 0.003287 |
NAZAR | 16 | 11 | 5 | 0.002768 |
MANZUR | 14 | 7 | 7 | 0.002422 |
JADUE | 13 | 7 | 6 | 0.002249 |
ANANIAS | 10 | 4 | 6 | 0.001730 |
AWAD | 9 | 6 | 3 | 0.001557 |
HADDAD | 8 | 3 | 5 | 0.001384 |
ZAROR | 8 | 3 | 5 | 0.001384 |
ALAMO | 4 | 2 | 2 | 0.000692 |
HIRMAS | 3 | 1 | 2 | 0.000519 |
df_contrata_total[df_contrata_total.index.isin(apellidos_judios)]
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
SCHMIDT | 32 | 15 | 17 | 0.005536 |
VENTURA | 28 | 15 | 13 | 0.004844 |
COHEN | 14 | 3 | 11 | 0.002422 |
IRARRAZAVAL | 12 | 9 | 3 | 0.002076 |
ERRAZURIZ | 10 | 4 | 6 | 0.001730 |
LASO | 9 | 4 | 5 | 0.001557 |
ASPILLAGA | 6 | 3 | 3 | 0.001038 |
COURT | 5 | 2 | 3 | 0.000865 |
ERGAS | 2 | 1 | 1 | 0.000346 |
df_contrata_total[df_contrata_total.index.isin(apellidos_romani)]
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
CALDERA | 21 | 12 | 9 | 0.003633 |
NICOLICH | 2 | 1 | 1 | 0.000346 |
df_contrata_total[df_contrata_total.index.isin(apellidos_mixtos)]
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
CONTADOR | 60 | 29 | 31 | 0.010379 |
SOLARI | 30 | 14 | 16 | 0.005190 |
FELIU | 28 | 16 | 12 | 0.004844 |
NEYRA | 18 | 7 | 11 | 0.003114 |
ESPINACE | 16 | 8 | 8 | 0.002768 |
HAHN | 10 | 7 | 3 | 0.001730 |
HADAD | 7 | 6 | 1 | 0.001211 |
MARTORELL | 3 | 2 | 1 | 0.000519 |
HERESMANN | 2 | 1 | 1 | 0.000346 |
df_contrata_total[df_contrata_total.index.isin(apellidos_aristocratas)]
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
VIAL | 65 | 34 | 31 | 0.011244 |
LYON | 12 | 6 | 6 | 0.002076 |
EDWARDS | 10 | 4 | 6 | 0.001730 |
BESA | 6 | 3 | 3 | 0.001038 |
SUBERCASEAUX | 6 | 5 | 1 | 0.001038 |
MACKENNA | 5 | 2 | 3 | 0.000865 |
ALESSANDRI | 2 | 1 | 1 | 0.000346 |
BRAUN | 2 | 1 | 1 | 0.000346 |
df_contrata_total[df_contrata_total.index.isin(apellidos_mixtos_aristocratas)]
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
BECKER | 50 | 30 | 20 | 0.008649 |
SOLER | 31 | 14 | 17 | 0.005363 |
LOPETEGUI | 22 | 12 | 10 | 0.003806 |
LENIZ | 9 | 7 | 2 | 0.001557 |
REUQUE | 9 | 2 | 7 | 0.001557 |
BASSI | 9 | 4 | 5 | 0.001557 |
ZEVALLOS | 6 | 5 | 1 | 0.001038 |
MEZZANO | 6 | 4 | 2 | 0.001038 |
df_contrata_total[df_contrata_total.index.isin(apellidos_prestigio)]
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
VIAL | 65 | 34 | 31 | 0.011244 |
DIEZ | 63 | 36 | 27 | 0.010898 |
NEUMANN | 47 | 25 | 22 | 0.008130 |
MONTT | 44 | 27 | 17 | 0.007611 |
ENRIQUEZ | 41 | 29 | 12 | 0.007093 |
TAGLE | 34 | 16 | 18 | 0.005882 |
OTERO | 34 | 19 | 15 | 0.005882 |
SCHMIDT | 32 | 15 | 17 | 0.005536 |
SOLER | 31 | 14 | 17 | 0.005363 |
SOLARI | 30 | 14 | 16 | 0.005190 |
WERNER | 29 | 15 | 14 | 0.005017 |
HOTT | 29 | 16 | 13 | 0.005017 |
UNDURRAGA | 29 | 16 | 13 | 0.005017 |
WALKER | 27 | 14 | 13 | 0.004671 |
PARODI | 26 | 17 | 9 | 0.004498 |
PEIRANO | 26 | 14 | 12 | 0.004498 |
GARRETON | 26 | 16 | 10 | 0.004498 |
MOLLER | 25 | 16 | 9 | 0.004325 |
NIKLITSCHEK | 22 | 8 | 14 | 0.003806 |
KLEIN | 22 | 12 | 10 | 0.003806 |
MOORE | 22 | 12 | 10 | 0.003806 |
ECHENIQUE | 20 | 11 | 9 | 0.003460 |
PETERSEN | 20 | 11 | 9 | 0.003460 |
CANESSA | 19 | 9 | 10 | 0.003287 |
ETCHEVERRY | 18 | 6 | 12 | 0.003114 |
PUELMA | 18 | 11 | 7 | 0.003114 |
RICHARDS | 18 | 10 | 8 | 0.003114 |
BUNSTER | 17 | 5 | 12 | 0.002941 |
PONS | 16 | 9 | 7 | 0.002768 |
ZEGERS | 15 | 9 | 6 | 0.002595 |
PARGA | 15 | 5 | 10 | 0.002595 |
HITSCHFELD | 15 | 8 | 7 | 0.002595 |
MANZUR | 14 | 7 | 7 | 0.002422 |
TASSARA | 13 | 7 | 6 | 0.002249 |
ASTABURUAGA | 13 | 5 | 8 | 0.002249 |
CAMPBELL | 13 | 7 | 6 | 0.002249 |
DELANO | 13 | 8 | 5 | 0.002249 |
LYON | 12 | 6 | 6 | 0.002076 |
BALTRA | 12 | 2 | 10 | 0.002076 |
ALLIENDE | 10 | 5 | 5 | 0.001730 |
EDWARDS | 10 | 4 | 6 | 0.001730 |
ERRAZURIZ | 10 | 4 | 6 | 0.001730 |
SOFFIA | 10 | 6 | 4 | 0.001730 |
ARIZTIA | 8 | 7 | 1 | 0.001384 |
MATTE | 7 | 2 | 5 | 0.001211 |
RISOPATRON | 4 | 2 | 2 | 0.000692 |
df_contrata_total[df_contrata_total.index.isin(apellidos_asiatico)]
Total | Apellido Paterno | Apellido Materno | Porcentaje | |
---|---|---|---|---|
LEE | 10 | 7 | 3 | 0.001730 |
KIM | 4 | 3 | 1 | 0.000692 |
CHUNG | 3 | 1 | 2 | 0.000519 |
CHEN | 2 | 1 | 1 | 0.000346 |
n_muestra = 300165*2
%store -r df_conjunto
ideal_mapuche_painemal = df_conjunto[df_conjunto.index.isin(apellidos_mapuches_painemal)][['PORCENTAJE_total']].sum()[0]*n_muestra/100
real_mapuche_painemal = df_contrata_total[df_contrata_total.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 = df_contrata_total[df_contrata_total.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 = df_contrata_total[df_contrata_total.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 = df_contrata_total[df_contrata_total.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 = df_contrata_total[df_contrata_total.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 = df_contrata_total[df_contrata_total.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 = df_contrata_total[df_contrata_total.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 = df_contrata_total[df_contrata_total.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 = df_contrata_total[df_contrata_total.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 = df_contrata_total[df_contrata_total.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 = df_contrata_total[df_contrata_total.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 = df_contrata_total[df_contrata_total.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['Ideal'] = tabla_resumen['Ideal'].astype(int)
tabla_resumen
Grupos | Real | Ideal | |
---|---|---|---|
0 | Aristócratas | 108 | 172 |
1 | Asiáticos | 19 | 43 |
2 | Atacameños | 59 | 85 |
3 | Aymaras | 1006 | 1364 |
4 | Judios | 118 | 191 |
5 | Mapuches (Amigo) | 16405 | 25129 |
6 | Mapuches (Painemal) | 14712 | 23319 |
7 | Mixtos | 174 | 194 |
8 | Mixto-Aristócratas | 142 | 124 |
9 | Palestinos | 104 | 136 |
10 | Prestigiosos | 1044 | 1122 |
11 | Romanis | 23 | 91 |
n_muestra = 300165*2
diff = pd.merge(df_contrata_total[['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)
diff_des['-+ %'] = diff_des['-+ %'].astype(int)
diff_des
Total | Porcentaje | PORCENTAJE_total | Caso ideal | -+ Personal | -+ % | |
---|---|---|---|---|---|---|
SAN | 1353 | 0.234053 | 0.000270 | 0.002156 | 1351.377951 | 62675809 |
VAN | 35 | 0.006055 | 0.000017 | 0.000132 | 34.900400 | 26360906 |
MAC | 30 | 0.005190 | 0.000028 | 0.000227 | 29.829258 | 13142838 |
SANTA | 38 | 0.006574 | 0.000052 | 0.000416 | 37.686973 | 9057254 |
OKUINGHTTONS | 6 | 0.001038 | 0.000012 | 0.000095 | 5.928857 | 6269443 |
... | ... | ... | ... | ... | ... | ... |
MATIAS | 3 | 0.000519 | 0.002377 | 0.018970 | -11.271188 | -59415 |
CANUMIR | 3 | 0.000519 | 0.002436 | 0.019443 | -11.626900 | -59799 |
JOSEPH | 3 | 0.000519 | 0.002925 | 0.023339 | -14.557972 | -62375 |
TORI | 3 | 0.000519 | 0.003062 | 0.024436 | -15.383225 | -62952 |
LEY | 6 | 0.001038 | 0.014041 | 0.112044 | -78.289647 | -69874 |
6858 rows × 6 columns
#APELLIDOS CON FRECUENCIA MAYOR A N
n = 0
target = df_contrata[['Apellido Paterno','remuneracionbruta_mensual']].groupby(['Apellido Paterno']).agg(['mean', 'count'])
target2 = target.sort_values(by=[('remuneracionbruta_mensual', 'count')], ascending=False)['remuneracionbruta_mensual']
target3 = df_contrata[['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'] > n].head(20)
<ipython-input-109-ad698a219fc2>:14: 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'] > n].head(20)
Renta bruta promedio | Total | |
---|---|---|
KEMPE | 9442945.0 | 1.0 |
PIMSTEIN | 8230183.0 | 1.0 |
RIBE | 8164193.0 | 1.0 |
DARVILLE | 8081037.0 | 1.0 |
VAL | 7928287.0 | 1.0 |
MARHUENDA | 7522226.0 | 1.0 |
ADILLE | 7412497.5 | 2.0 |
REYNAUD | 7406281.0 | 1.0 |
CHERREZ | 7356968.0 | 1.0 |
FERRET | 7070364.0 | 1.0 |
HESSE | 6976127.0 | 1.0 |
WOLFENSON | 6915894.0 | 1.0 |
CARAZO | 6891143.0 | 1.0 |
PLATTNER | 6860180.0 | 1.0 |
GOLES | 6811995.0 | 1.0 |
VELTEN | 6737105.0 | 1.0 |
FLATOW | 6731013.0 | 1.0 |
DEHAYS | 6687581.0 | 2.0 |
CABREJOS | 6614562.0 | 1.0 |
FIGHETTI | 6591146.0 | 1.0 |
pd.options.display.float_format = '{:,.2f}'.format
target = df_contrata[['nombre','region','remuneracionbruta_mensual']].groupby(['region']).agg(['mean', 'count'])
target2 = target.sort_values(by=[('remuneracionbruta_mensual', 'mean')], ascending=False)['remuneracionbruta_mensual']
target2.columns = ['Remuneración bruta promedio', '#']
target2
Remuneración bruta promedio | # | |
---|---|---|
region | ||
Region de Aysen | 1,628,890.30 | 5152 |
Region de Magallanes | 1,507,022.29 | 4511 |
Region de Tarapaca | 1,419,922.60 | 5097 |
Region Metropolitana de Santiago | 1,388,445.69 | 104158 |
Region de Atacama | 1,316,816.88 | 5491 |
Region de Antofagasta | 1,290,994.40 | 9503 |
Region de Arica y Parinacota | 1,235,516.78 | 5081 |
Region de Los Rios | 1,197,790.67 | 7471 |
Region de Los Lagos | 1,154,485.52 | 20131 |
Region de OHiggins | 1,142,574.82 | 14463 |
Region del Biobio | 1,136,584.47 | 29544 |
Region de Valparaiso | 1,100,784.71 | 29202 |
Region de Coquimbo | 1,096,243.21 | 13208 |
Region de Nuble | 1,070,832.43 | 9857 |
Region del Maule | 1,040,269.87 | 18040 |
Region de La Araucania | 997,844.99 | 19285 |
pd.options.display.float_format = '{:,.2f}'.format
target = df_contrata[['nombre','region','remuneracionbruta_mensual']].groupby(['region']).agg(['mean', 'count'])
target2 = target.sort_values(by=[('remuneracionbruta_mensual', 'count')], ascending=False)['remuneracionbruta_mensual']
target2.columns = ['Remuneración bruta promedio', '#']
target2['%'] = target2['#']/target2['#'].sum()*100
pd.set_option('display.max_columns', None)
target = pd.merge(df_contrata, df_instituciones, left_on='organismo_codigo', right_on='Codigo_org', how='inner')
target
camino | organismo_nombre | organismo_codigo | fecha_publicacion | anyo | Mes | Tipo Estamento | nombre | 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 | /Municipalidad/2020/Mes de Enero | Municipalidad de Llanquihue | MU142 | 2020/03/13 | 2020 | Febrero | Auxiliar | GUERRERO VILLEGAS ROBERTO MAURICIO | 18 | CHOFER | AUXILIAR | Región de Los Lagos | (01) | Pesos | 651,695.00 | nan | $68,525 34.00hrs | $50,789 21.00hrs | No tiene | 20/06/2019 | 31/12/2020 | Sin observaciones | No | nan | 582 | Municipalidad de Llanquihue | MU000 | Municipios de Los Lagos | Región de Los Lagos | LLANQUIHUE | Calle Ohiggins Nº 329 Llanquihue | (65) 24 4500 | http://www.llanquihue.cl | https://www.portaltransparencia.cl/PortalPdT/p... | Lunes a Viernes de 09:00 a 13:00 y de 15:00 a ... | Pablo Flores Merino | transparencia@llanquihue.cl | nan | NaN | NaN | NaN | http://www.munillanquihue.cl/ | NaN | Ingresa | SÍ | NO | NO | SÍ | 2018/01/01 |
1 | /Municipalidad/2020/Mes de Enero | Municipalidad de Llanquihue | MU142 | 2020/03/13 | 2020 | Febrero | Técnico | VENEGAS ZEPEDA CESAR IVAN | 12 | TECNICO UNIVERSITARIO EN DIBUJO INDUSTRI | TECNICA | Región de Los Lagos | (01) | Pesos | 1,148,946.00 | nan | No tiene | No tiene | No tiene | 01/01/2015 | 31/12/2020 | Sin observaciones | No | nan | 582 | Municipalidad de Llanquihue | MU000 | Municipios de Los Lagos | Región de Los Lagos | LLANQUIHUE | Calle Ohiggins Nº 329 Llanquihue | (65) 24 4500 | http://www.llanquihue.cl | https://www.portaltransparencia.cl/PortalPdT/p... | Lunes a Viernes de 09:00 a 13:00 y de 15:00 a ... | Pablo Flores Merino | transparencia@llanquihue.cl | nan | NaN | NaN | NaN | http://www.munillanquihue.cl/ | NaN | Ingresa | SÍ | NO | NO | SÍ | 2018/01/01 |
2 | /Municipalidad/2020/Mes de Enero | Municipalidad de Llanquihue | MU142 | 2020/03/13 | 2020 | Febrero | Técnico | VARGAS TORRES VICTOR | 10 | TECNICO | TECNICA | Región de Los Lagos | (01) | Pesos | 1,253,194.00 | nan | $34,355 6.00hrs | No tiene | No tiene | 01/03/2016 | 31/12/2020 | Sin observaciones | No | nan | 582 | Municipalidad de Llanquihue | MU000 | Municipios de Los Lagos | Región de Los Lagos | LLANQUIHUE | Calle Ohiggins Nº 329 Llanquihue | (65) 24 4500 | http://www.llanquihue.cl | https://www.portaltransparencia.cl/PortalPdT/p... | Lunes a Viernes de 09:00 a 13:00 y de 15:00 a ... | Pablo Flores Merino | transparencia@llanquihue.cl | nan | NaN | NaN | NaN | http://www.munillanquihue.cl/ | NaN | Ingresa | SÍ | NO | NO | SÍ | 2018/01/01 |
3 | /Municipalidad/2020/Mes de Enero | Municipalidad de Llanquihue | MU142 | 2020/03/13 | 2020 | Febrero | Administrativo | SOTO ROMERO INGRID VERONICA | 14 | ASISTENTE SOCIAL | ADMINISTRATIVA | Región de Los Lagos | (01) | Pesos | 879,719.00 | nan | $79,083 27.00hrs | $49,207 14.00hrs | No tiene | 01/01/2016 | 31/12/2020 | Sin observaciones | No | nan | 582 | Municipalidad de Llanquihue | MU000 | Municipios de Los Lagos | Región de Los Lagos | LLANQUIHUE | Calle Ohiggins Nº 329 Llanquihue | (65) 24 4500 | http://www.llanquihue.cl | https://www.portaltransparencia.cl/PortalPdT/p... | Lunes a Viernes de 09:00 a 13:00 y de 15:00 a ... | Pablo Flores Merino | transparencia@llanquihue.cl | nan | NaN | NaN | NaN | http://www.munillanquihue.cl/ | NaN | Ingresa | SÍ | NO | NO | SÍ | 2018/01/01 |
4 | /Municipalidad/2020/Mes de Enero | Municipalidad de Llanquihue | MU142 | 2020/03/13 | 2020 | Febrero | Auxiliar | RODRIGUEZ TENORIO PATRICIO ERNESTO | 16 | ENCARGADO EMERGENCIA Y PROTECCION CIVIL | AUXILIAR | Región de Los Lagos | (01) | Pesos | 735,414.00 | nan | $19,566 8.00hrs | $79,243 27.00hrs | No tiene | 01/08/2016 | 31/12/2020 | Sin observaciones | No | nan | 582 | Municipalidad de Llanquihue | MU000 | Municipios de Los Lagos | Región de Los Lagos | LLANQUIHUE | Calle Ohiggins Nº 329 Llanquihue | (65) 24 4500 | http://www.llanquihue.cl | https://www.portaltransparencia.cl/PortalPdT/p... | Lunes a Viernes de 09:00 a 13:00 y de 15:00 a ... | Pablo Flores Merino | transparencia@llanquihue.cl | nan | NaN | NaN | NaN | http://www.munillanquihue.cl/ | NaN | Ingresa | SÍ | NO | NO | SÍ | 2018/01/01 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
309678 | /2020/Febrero | Instituto de Salud Pública (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Profesional | LINEROS SALINAS MICHELLE MARIANNE | 12 | MEDICO VETERINARIO | PROFESIONAL | Región Metropolitana de Santiago | (232)(33) | Pesos | 1,712,176.00 | 1,351,381.00 | No tiene | No tiene | No tiene | 01/01/2020 | 31/12/2020 | Sin observaciones | 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 |
309679 | /2020/Febrero | Instituto de Salud Pública (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Profesional | LIMA PASSOS ANDRE | 12 | INGENIERO INFORMATICA | PROFESIONAL | Región Metropolitana de Santiago | (01) | Pesos | 1,644,059.00 | 1,313,285.00 | No tiene | No tiene | No tiene | 01/01/2020 | 31/03/2020 | Sin observaciones | 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 |
309680 | /2020/Febrero | Instituto de Salud Pública (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Profesional | LEYTON PERALTA NICOL KARINA | 12 | QUIMICOFARMACEUTICO | PROFESIONAL | Región Metropolitana de Santiago | (01) | Pesos | 1,644,059.00 | 1,303,592.00 | No tiene | No tiene | No tiene | 01/01/2020 | 31/12/2020 | Sin observaciones | 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 |
309681 | /2020/Febrero | Instituto de Salud Pública (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Auxiliar | LEYTON LEYTON RONY | 23 | ENSEÑANZA MEDIA COMPLETA | AUXILIAR | Región Metropolitana de Santiago | (08) | Pesos | 539,201.00 | 416,005.00 | $36,433 16.00hrs | No tiene | $27,324 10.00hrs | 01/01/2020 | 31/03/2020 | Sin observaciones | 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 |
309682 | /2020/Febrero | Instituto de Salud Pública (ISP) | AO005 | 2020/10/24 | 2020 | Febrero | Auxiliar | LEYTON LEYTON JIMMY | 23 | ENSEÑANZA MEDIA COMPLETA | AUXILIAR | Región Metropolitana de Santiago | (229) | Pesos | 593,426.00 | 465,449.00 | No tiene | No tiene | No tiene | 01/01/2020 | 13/02/2020 | Sin observaciones | 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 |
309683 rows × 49 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 | ||
Minería | 2,641,334.40 | 783 |
Ciencia Tecnología e Innovación | 2,521,288.49 | 47 |
Superintendencia de Servicios Sanitarios | 2,465,673.17 | 190 |
Medio Ambiente | 2,395,226.24 | 1088 |
Energía | 2,303,465.36 | 968 |
Relaciones Exteriores | 2,006,106.13 | 125 |
Consejo Defensa del Estado | 1,929,908.78 | 459 |
Hacienda | 1,911,628.71 | 4323 |
Universidades | 1,897,457.08 | 323 |
Bienes Nacionales | 1,891,340.69 | 593 |
La Mujer y Equidad de Género | 1,846,666.01 | 410 |
Desarrollo Social | 1,834,767.81 | 2522 |
Secretaría General de la Presidencia | 1,805,932.40 | 136 |
Secretaría General de Gobierno | 1,801,842.04 | 434 |
Agricultura | 1,770,026.40 | 5124 |
Deporte | 1,761,783.83 | 797 |
Transportes y Telecomunicaciones | 1,753,522.16 | 1067 |
Trabajo y Previsión Social | 1,746,574.82 | 6563 |
Interior y Seguridad Pública | 1,738,071.57 | 2627 |
Economía Fomento y Turismo | 1,688,218.39 | 4366 |
Justicia | 1,608,099.38 | 9536 |
Culturas y las Artes | 1,598,868.64 | 2284 |
Vivienda y Urbanismo | 1,521,420.47 | 5206 |
Defensa Nacional | 1,486,210.77 | 4150 |
Presidencia de la República | 1,413,786.01 | 317 |
Obras Públicas | 1,398,557.91 | 7066 |
Municipios de Aysen del General Carlos Ibáñez del Campo | 1,324,283.15 | 683 |
Salud | 1,247,729.04 | 127376 |
Municipios de Magallanes y de la Antártica Chilena | 1,213,948.53 | 313 |
Municipios de Tarapacá | 1,182,005.17 | 305 |
Municipios de Antofagasta | 1,110,420.29 | 442 |
Municipios de R. Metropolitana de Santiago | 1,063,150.25 | 13186 |
Corporaciones Municipales | 1,054,400.78 | 16377 |
Municipios de Valparaíso | 1,011,212.56 | 5859 |
Municipios de Arica y Parinacota | 967,835.91 | 43 |
Municipios del Libertador General Bernardo OHiggins | 959,666.77 | 4605 |
Educación | 957,057.35 | 30212 |
Municipios de Coquimbo | 940,411.35 | 3764 |
Municipios del Maule | 923,548.10 | 7367 |
Municipios de Atacama | 899,664.59 | 839 |
Municipios del Bíobio | 899,228.99 | 9957 |
Municipios de La Araucanía | 897,633.80 | 4584 |
Municipios de Los Ríos | 852,705.15 | 1995 |
Municipios de Ñuble | 806,952.69 | 4631 |
Municipios de Los Lagos | 789,931.22 | 6152 |
pd.options.display.float_format = '{:,.2f}'.format
n = 20
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']).head(n)
target2
# | Remuneración bruta promedio | |
---|---|---|
Padre_org | ||
Salud | 132899 | 1,281,563.89 |
Educación | 31820 | 966,395.79 |
Corporaciones Municipales | 16381 | 1,054,573.34 |
Municipios de R. Metropolitana de Santiago | 13242 | 1,063,918.48 |
Municipios del Bíobio | 10609 | 874,979.09 |
Justicia | 9538 | 1,608,203.35 |
Municipios del Maule | 7535 | 914,285.63 |
Obras Públicas | 7066 | 1,398,557.91 |
Municipios de Los Lagos | 6642 | 764,322.48 |
Trabajo y Previsión Social | 6563 | 1,746,574.82 |
Municipios de Valparaíso | 5941 | 1,009,493.05 |
Vivienda y Urbanismo | 5391 | 1,517,578.72 |
Agricultura | 5124 | 1,770,026.40 |
Municipios de La Araucanía | 4812 | 889,384.75 |
Municipios de Ñuble | 4716 | 801,842.45 |
Municipios del Libertador General Bernardo OHiggins | 4627 | 957,985.98 |
Economía Fomento y Turismo | 4366 | 1,688,218.39 |
Hacienda | 4323 | 1,911,628.71 |
Defensa Nacional | 4151 | 1,486,148.07 |
Municipios de Coquimbo | 3880 | 949,695.19 |
n = 20
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 | ||
Comisión Nacional de Energía (CNE) | 4,030,379.79 | 89 |
Dirección de Presupuestos (DIPRES) | 3,713,349.45 | 307 |
Comisión para el Mercado Financiero (CMF ex SVS) | 3,497,636.16 | 532 |
Fiscalía Nacional Económica (FNE) | 3,483,844.53 | 103 |
Agencia de Promoción de la Inversión Extranjera | 3,349,424.92 | 39 |
Comisión Chilena del Cobre (COCHILCO) | 3,324,117.76 | 76 |
Administradora de los Tribunales Tributarios y Aduaneros (ATTA) | 3,232,148.59 | 41 |
Defensoría Penal Pública (DPP) | 3,224,771.98 | 479 |
Subsecretaría de Turismo | 3,109,200.00 | 22 |
Junta de Aeronáutica Civil (JAC) | 2,962,970.42 | 19 |
Universidad de Aysén | 2,957,517.29 | 78 |
Superintendencia de Casinos de Juego (SCJ) | 2,950,832.65 | 51 |
Unidad de Análisis Financiero | 2,937,649.59 | 66 |
Superintendencia de Educación Superior | 2,867,979.74 | 38 |
Superintendencia de Salud (SdS) | 2,686,518.62 | 282 |
Superintendencia de Pensiones (SP) | 2,645,112.44 | 217 |
Subsecretaria de Evaluación Social | 2,638,912.42 | 215 |
Superintendencia de Seguridad Social (SUSESO) | 2,637,385.00 | 275 |
Subsecretaría de Energía | 2,624,040.04 | 307 |
Servicio Nacional de Geología y Minería (SERNAGEOMIN) | 2,617,077.80 | 600 |
n=20
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(n)
# | Remuneración bruta promedio | |
---|---|---|
Organismo | ||
Junta Nacional de Jardines Infantiles (JUNJI) | 19641 | 708,864.40 |
Hospital Dr. Hernán Henríquez Aravena de Temuco | 4699 | 583,301.80 |
Servicio Nacional de Menores (SENAME) | 4191 | 1,517,271.14 |
Servicio de Salud Metropolitano Sur Oriente | 4141 | 1,385,952.89 |
Dirección de Vialidad (VIALIDAD) | 3801 | 1,186,467.74 |
Hospital Sótero del Río | 3723 | 1,253,468.78 |
Dirección General de Aeronáutica Civil (DGAC) | 3463 | 1,486,031.13 |
Servicio de Registro Civil e Identificación | 3395 | 1,320,459.12 |
Servicio Agrícola y Ganadero (SAG) | 3274 | 1,616,951.31 |
Municipalidad de Puerto Montt | 3182 | 613,641.55 |
Hospital de Puerto Montt | 2932 | 1,221,830.96 |
Hospital San José | 2902 | 1,115,387.86 |
Servicio de Salud Araucanía Sur | 2859 | 1,173,595.53 |
Hospital Regional de Talca | 2766 | 1,140,344.90 |
Servicio de Salud Viña del Mar Quillota | 2722 | 1,032,782.07 |
Hospital Barros Luco | 2619 | 1,126,348.64 |
Hospital Leonardo Guzmán de Antofagasta | 2569 | 1,131,560.43 |
Hospital San Juan de Dios | 2510 | 1,108,311.43 |
Hospital Gustavo Fricke | 2504 | 1,028,613.89 |
Municipalidad de Santiago | 2446 | 1,017,514.36 |
n = 20
target2 = target[['Tipo Estamento','remuliquida_mensual','remuneracionbruta_mensual']].groupby(['Tipo Estamento']).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 | # | |
---|---|---|
Tipo Estamento | ||
Directivo | 3,051,571.90 | 230 |
Experto | 2,510,499.31 | 58 |
Medicos cirujanos farmaceuticos quimicofarmaceuticos bioquimicos cirujanodentistas | 2,443,887.14 | 25381 |
Fiscalizador | 2,024,316.83 | 1940 |
Profesional | 1,780,126.46 | 94144 |
Jefatura | 1,728,777.24 | 45 |
Docentedirectivo | 1,623,806.75 | 631 |
Tecnicopedagogico | 1,262,510.82 | 361 |
Otros profesionales (Ley 19.378) | 1,208,094.92 | 6682 |
Sin Estamento | 1,164,262.46 | 489 |
Educacion | 1,123,955.04 | 939 |
No docente de caracter profesional | 939,198.43 | 282 |
Docente | 931,705.07 | 38955 |
Administrativo | 763,365.76 | 35554 |
Tecnicos de Salud | 706,708.60 | 1064 |
Tecnico | 679,806.08 | 61809 |
Tecnicos de nivel superior (Ley 19.378) | 654,823.45 | 5670 |
Chofer | 654,426.20 | 361 |
Auxiliar Paramedico | 624,979.34 | 56 |
Auxiliares de servicios de Salud | 578,923.73 | 2688 |
n=20
pd.options.display.float_format = '{:,.2f}'.format
target2 = target[['Tipo Estamento','remuliquida_mensual','remuneracionbruta_mensual']].groupby(['Tipo Estamento']).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(n)
# | Remuneración bruta promedio | |
---|---|---|
Tipo Estamento | ||
Profesional | 94144 | 1,780,126.46 |
Tecnico | 61809 | 679,806.08 |
Docente | 38955 | 931,705.07 |
Administrativo | 35554 | 763,365.76 |
Medicos cirujanos farmaceuticos quimicofarmaceuticos bioquimicos cirujanodentistas | 25381 | 2,443,887.14 |
Auxiliar | 20017 | 554,321.89 |
Otros profesionales (Ley 19.378) | 6682 | 1,208,094.92 |
Tecnicos de nivel superior (Ley 19.378) | 5670 | 654,823.45 |
Auxiliares de servicios de Salud | 2688 | 578,923.73 |
Administrativos de Salud | 2106 | 569,958.79 |
Fiscalizador | 1940 | 2,024,316.83 |
Tecnicos de Salud | 1064 | 706,708.60 |
Educacion | 939 | 1,123,955.04 |
Docentedirectivo | 631 | 1,623,806.75 |
Sin Estamento | 489 | 1,164,262.46 |
No docente de servicios auxiliares | 418 | 470,308.35 |
Chofer | 361 | 654,426.20 |
Tecnicopedagogico | 361 | 1,262,510.82 |
No docente paradocente | 314 | 495,143.60 |
No docente de caracter profesional | 282 | 939,198.43 |
n = 20
target2 = target[['grado_eus','remuliquida_mensual','remuneracionbruta_mensual']].groupby(['grado_eus']).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 | # | |
---|---|---|
grado_eus | ||
Jornada de 19 Horas | 6,620,605.00 | 1 |
04 | 5,595,234.00 | 3 |
05 | 5,411,562.56 | 34 |
Nivel II | 5,127,572.08 | 12 |
IIA | 4,917,712.00 | 3 |
06 | 4,583,492.57 | 60 |
Nivel I | 4,526,453.00 | 12 |
Jornada de 40 horas | 4,516,110.33 | 3 |
07 | 4,510,286.05 | 37 |
Nivel III | 4,498,684.48 | 23 |
II | 4,476,448.32 | 19 |
08 | 4,388,332.05 | 41 |
(44 Hrs.) | 4,224,930.25 | 4 |
Docente33HRS | 4,024,258.00 | 1 |
6B | 4,003,039.50 | 2 |
09 | 3,873,883.80 | 60 |
9A | 3,816,571.00 | 1 |
Nivel IV | 3,697,051.64 | 28 |
III | 3,631,898.53 | 19 |
IIIA | 3,555,443.00 | 1 |