Path: blob/main/Trabajo_grupal/WG8/Grupo6_py.py
2714 views
# -*- coding: utf-8 -*-1"""2Created on Sun Nov 13 11:59:28 202234@author: HP5"""678#########################################################################9Tarea 8 - Grupo 610########################################################################1112! pip install pyreadr1314#----------------------------------------------15# Antes de responder a las preguntas tenemos que cargar la base de datos, observar los nombre de etiquetas de la base1617import numpy as np18import pandas as pd19import pyreadr20from pandas import Series, DataFrame21import matplotlib.pyplot as plt # Es librería para gráficos22import seaborn as sns # Es librería para gráficos23import datetime as dt # Es librería para fechas24import warnings25warnings.filterwarnings('ignore') # Para eliminar mensajes de alerta2627#----------------------------------------------28# Pregunta 1: En gráfico muestre el histograma de frecuencias absolutas del salario y, en otro gráfico, el histograma del logaritmo del salario. Comente las diferencias y por qué29# Indicamos la base de datos con la que trabajaremos y colocaremos un nombre a la base de datos de la encuesta de población para EEUU (2015)3031result = pyreadr.read_r("../data//wage2015_subsample_inference.Rdata")32base = result['base']33data.dtypes34print(base)3536# Para El PRIMER GRAFICO de histograma de frecuencias absolutas del salario (wage) utilizamos comando kind= hist37# se coloca el título al gráfico y el título a la coordenada de salario3839fig, ax = plt.subplots( figsize=(8,8) ) # para establecer el tamaño del gráfico40base['wage'].plot(kind = 'hist', bins = 30) # se le coloca 30 para ver mejor la distribución41plt.title('Salario por hora')42txt="Elaboración propia del grupo 6"43plt.figtext(0.5, 0.01, txt, wrap=True, horizontalalignment='center', fontsize=12)44plt.show()4546# Para El SEGUNDO GRAFICO de histograma de frecuencias absolutas del logaritmo del salario (lwage) utilizamos comando kind= hist47# indicamos el tamaño del gráfico48fig, ax = plt.subplots( figsize=(8,8) )49base['lwage'].plot(kind = 'hist', bins = 50) # se le coloca 50 para ver mejor la distribución50plt.title('Logaritmo del salario por hora')51txt="Elaboración propia del grupo 6"52plt.figtext(0.5, 0.01, txt, wrap=True, horizontalalignment='center', fontsize=12)53plt.show()5455# Comentario - En el caso del histograma del logaritmo del salario se muestra el comportamiento de una distribución normal. Mientras que en el caso del histograma de salario unicamente, se muestra la distribución hacia un lado solamente. Esto también porque con el logaritmo podemos observar los incrementos a partir de la variación de 1 unidad.5657#----------------------------------------------58# Pregunta 2: En una sola imagen, el gráfico de densidad del logaritmo del salario por hora de las mujeres que terminaron la universidad y el caso de los hombres59# Indicamos el tamaño del gráfico, seguido de utilizar el comando kdeplot para gráfico de densidad6061plt.figure(figsize=(10, 5))62sns.kdeplot(base.lwage[base.sex == 1], label='Mujer', shade=True,63x = 'bwghtlbs',64alpha = 0.4,65edgecolor="0.1",66linewidth=1,67color = 'red'68)69sns.kdeplot(base.lwage[base.sex == 0], label='Hombre', shade=True,70x = 'bwghtlbs',71alpha = 0.4,72edgecolor="0.1",73linewidth=1,74color = 'blue'75)7677plt.legend(labels=['Mujer','Hombre'], title = "", frameon=True, bbox_to_anchor=(1.0, 0.98))78plt.title('Grafico de densidad por sexos', size=15)79plt.ylabel('Kernel Density')80plt.xlabel('Logaritmo del salario por sexos')818283#----------------------------------------------84# Pregunta 3: En un gráfico Pie, muestre el porcentaje de personas según nivel educativo85# Sabemos quehay 5 niveles educativos, por lo que deberíamos tener una sola variable que agrupe a las demás categorías, mediante comando groupby8687base.columns88columnas = ['shs','hsg', 'scl', 'clg', 'ad']89base_2 = base.filter(columnas)90base_2['nivel_educa']=base_2['shs']+base_2['hsg']+base_2['scl']+base_2['clg']+base_2['ad']91base_292#Donde93# shs: Si la persona tiene secundaria incompleta (Some high school)94# shg: secundaria completa (High schoool graduate)95# scl: Universitaria incompleta (Some college)96# clg: Universitaria completa (College gratuate)97# ad: Grado educativo avanzado (Advanced degree - master or Phd)9899basee = base_2.groupby('ad')['ad'].size() # cantidad por tipo de ocupación100labels=['No posee un grado educativo avanzado','Posee un grado educativo avanzado']101102fig, ax = plt.subplots( figsize=(5,5) )103104ax = plt.pie(basee, labels=labels, autopct='%.1f %%')105plt.title("Secundaria incompleta")106plt.ylabel("")107plt.show()108109base2 = base_2.groupby('shs')['shs'].size()110labels2=['No Posee secundaria incompleta','Posee secundaria incompleta']111112fig, ax = plt.subplots( figsize=(5,10) )113114ax = plt.pie(base2, labels=labels2, autopct='%.1f %%')115plt.title("Secundaria incompleta")116plt.ylabel("")117plt.show()118119base3 = base_2.groupby('scl')['scl'].size() # cantidad por tipo de ocupación120labels3=['No posee Universitaria incompleta','Posee Universitaria incompleta']121122fig, ax = plt.subplots( figsize=(5,5) )123124ax = plt.pie(base3, labels=labels3, autopct='%.1f %%')125plt.title("Universitaria incompleta")126plt.ylabel("")127plt.show()128129base4 = base_2.groupby('clg')['clg'].size() # cantidad por tipo de ocupación130labels4=['No posee educacion universitaria completa','Posee educacion universitaria completa']131132fig, ax = plt.subplots( figsize=(5,5))133ax = plt.pie(base4, labels=labels4, autopct='%.1f %%')134plt.title("Universitaria completa")135plt.ylabel("")136plt.show()137138139140141142#----------------------------------------------143# Pregunta 4: En un gráfico, muestre el diagrama de cajas (box - plot) del logaritmo del salario por hora de las personas con el mayor nivel educativo (ad) según genero. Nótese que el gráfico debe contener dos box-plot uno para los hombres y otro para las mujeres144145146fig, ax = plt.subplots(figsize=(10,6))147148box = sns.boxplot(x="sex", y="lwage", data=base[base['ad'] == 1 ] ,palette='rainbow', showfliers=False)149150plt.xlabel('sexo')151plt.ylabel('Logaritmo del salario por hora')152153(box.set_xticklabels(["Mujer", "Hombre"]))154155156