Path: blob/main/Trabajo_grupal/WG8/Grupo_3_py_Ejercicio 1 al 3.py
2714 views
#!/usr/bin/env python1# coding: utf-823# In[92]:456# En primera instancia, vamos a importar todas las librerías que usaremos:789# In[93]:101112import pandas as pd1314import pyreadr1516import math1718import matplotlib.pyplot as plt1920import numpy as np2122import seaborn as sns232425# ### Pregunta 1: En un 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é.2627# In[94]:282930# De esta manera abrimos una base de datos que esta en formato R en Python:3132# Desde ya mencionar, que nuestra base de datos recibirá el nombre de "result"3334result = pyreadr.read_r("/Users/diegoyeliseo/Desktop/Archivo R Tarea 8/wage2015_subsample_inference.Rdata")353637print(result.keys())3839data = result["data"]4041print(data)424344# In[95]:454647data.head() #ver variables (nos interesan wage & lwage)484950# In[96]:515253get_ipython().run_line_magic('matplotlib', 'inline')54params = {'legend.fontsize': 'x-large',55'figure.figsize': (10, 7.5),56'axes.labelsize': 'x-large',57'axes.titlesize':'x-large',58'xtick.labelsize':'x-large',59'ytick.labelsize':'x-large'}60plt.rcParams.update(params)616263# In[97]:646566# realizamos el primer histograma del salario por hora6768(counts, bins, patches) = plt.hist(data['wage'], bins = 100, color ='orange', rwidth=0.75)69plt.xlabel('Salario por Hora')70plt.ylabel('Frecuencia')71plt.title('Histograma #1 - Frecuencia absoluta')72plt.show() #mostramos el histograma del salario737475# In[98]:767778# realizamos el segundo histograma del salario por hora en logaritmos7980(counts, bins, patches) = plt.hist(data['lwage'], bins = 100, color ='green', rwidth=0.75)81plt.xlabel('Salario por Hora en Logaritmos')82plt.ylabel('Frecuencia')83plt.title('Histograma #2 - Frecuencia absoluta')84plt.show() #mostramos el histograma del salario en logaritmo8586# La diferencia entre ambos histogramas se debe a la conversión de la variable 'wage' a logaritmos --> 'lwage', puesto que al transformar una variable cuantitativa a logaritmos se tiene una distribución de datos más simétrica. Esta transformación monótona permite realizar una mejor regresión lineal entre variables de interés, pues se acota el rango de la variable (wage) a uno más pequeño, esto reduce la sensibilidad de la estimación ante observaciones atípicas.878889# ### 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 hombres.9091# In[99]:929394fig = plt.subplots(figsize=(8,5)) # Para el tamaño del gráfico959697sns.kdeplot(data = data[data.clg == 1],98x = 'lwage',99hue = 'sex',100alpha = 0.6,101edgecolor="0.1",102linewidth=1,103fill=True104)105106107plt.legend(labels=['mujeres','hombres'], title = "", frameon=True, bbox_to_anchor=(1.0, 0.98))108109plt.title('Log salario por hora', size=11)110111plt.ylabel('Kernel Density')112113plt.xlabel('')114115# Comentario del gráfico: En el gráfico de densidad, se observa la diferencia de salario por hora de hombres y mujeres representado en azul y naranja. En este, se tiene que las mujeres llegan a un pico de 0,4, mientras el de los hombres es menor hasta 0.35 aproximadamente.116117118# ### Pregunta 3: En un gráfico Pie, muestre el porcentaje de personas según nivel educativo.119120# In[100]:121122Datos:123124# shs: Si la persona tiene secundaria incompleta (Some high school)125# hsg: secundaria completa (High schoool graduate)126# scl: Universitaria incompleta (Some college)127# clg: Universitaria completa (College gratuate)128# ad: Grado educativo avanzado (Advanced degree - master or Phd)129130131# In[101]:132133# Estamos diciendo que result1 va a ser igual a nuestra base de datos inicial134135result1 = result['data']136137# Estamos asignándole un número a cada elemento:138139result1.loc[result1["hsg"] == 1, "hsg"] = 2140result1.loc[result1["scl"] == 1, "scl"] = 3141result1.loc[result1["clg"] == 1, "clg"] = 4142result1.loc[result1["ad"] == 1, "ad"] = 5143144# Estamos diciéndole a Python de que el nivel educativo va a ser igual a la suma de esas 5 variables:145146result1['nivel_educativo'] = result1['shs'] + result1["hsg"] + result1["scl"] + result1["clg"] + result1["ad"]147148# Estamos agrupando cada tipo de ocupación:149150base = result1.groupby('nivel_educativo')['nivel_educativo'].size()151152# Le ponemos un nombre a los elementos del gráfico:153154labels=['Some high school','High schoool graduate' , 'Some college', 'College gratuate', 'Advanced degree - master or Phd' ]155156fig, ax = plt.subplots( figsize=(10,10) ) # El tamaño de la caja157158base.plot(kind='pie', labels=labels, autopct='%.1f %%')159160plt.title("Porcentaje de personas según nivel educativo") # Para ponerle título al gráfico161162plt.ylabel("")163164plt.show() # Para mostrar el gráfico165166# Podemos ver que hay un mayor grupo de personas con universitaria completa, siendo un total de 31.8% del total. En segundo lugar, hay un total de 27.8% de personas que cuentan con universitaria incompleta. Esta brecha como vemos no es muy amplia. En última instancia se encuentran personas que tienen secundaria incompleta, siendo este porcentaje del 2.3% del total. Estos porcentajes guardan sentido lógico ya que Estados Unidos al ser un país primermundista, contribuye de manera significativa en la educación de su población, razón por la cual, se espera que un mayor porcentaje tenga universitaria completa.167168