Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG8/Grupo_1_py.ipynb
2714 views
Kernel: Python 3 (ipykernel)

Trabajo grupal 8

Grupo 1

Miembros:

20163197, Enrique Alfonso Pazos

20191894, Ilenia Ttito

20151595, Rodrigo Ramos

20193469, Luis Eguzquiza

20163377, Jean Niño de Guzmán

pip install pyreadr
Requirement already satisfied: pyreadr in c:\users\lenovo\anaconda3\lib\site-packages (0.4.6)Note: you may need to restart the kernel to use updated packages. Requirement already satisfied: pandas>=1.2.0 in c:\users\lenovo\anaconda3\lib\site-packages (from pyreadr) (1.4.2) Requirement already satisfied: python-dateutil>=2.8.1 in c:\users\lenovo\anaconda3\lib\site-packages (from pandas>=1.2.0->pyreadr) (2.8.2) Requirement already satisfied: numpy>=1.18.5 in c:\users\lenovo\anaconda3\lib\site-packages (from pandas>=1.2.0->pyreadr) (1.21.5) Requirement already satisfied: pytz>=2020.1 in c:\users\lenovo\anaconda3\lib\site-packages (from pandas>=1.2.0->pyreadr) (2021.3) Requirement already satisfied: six>=1.5 in c:\users\lenovo\anaconda3\lib\site-packages (from python-dateutil>=2.8.1->pandas>=1.2.0->pyreadr) (1.16.0)
import os import numpy as np import pandas as pd from pandas import Series, DataFrame import pyreadr import matplotlib.pyplot as plt # libreria de gráficos import seaborn as sns # libreria 2 para gráficos import datetime as dt # manejar fechas import warnings warnings.filterwarnings('ignore') # eliminar warning messages # Set directory user = os.getlogin() os.chdir(f"C:/Users/{user}/Documents/GitHub/1ECO35_2022_2/data")
dr = pyreadr.read_r("../data/wage2015_subsample_inference.Rdata") df = dr['data'] df

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é.

#PREGUNTA 1: #Grafico1: Frecuencia del Salario #Se indica el tamaño del gráfico fig, ax = plt.subplots( figsize=(10,10) ) #Se indica que se use la columna "wage" para la creación de un gráfio de histograma df['wage'].plot(kind = 'hist', bins = 100) #Se coloca un titulo al gráfico plt.title('Histograma del Salario') txt="Elboración propia Grupo 1" plt.figtext(0.5, 0.01, txt, wrap=True, horizontalalignment='center', fontsize=11) plt.title('Salario') plt.show()
Image in a Jupyter notebook
#Grafico2: Frecuencia del Logaritmo del Salario #Se indica el tamaño del gráfico fig, ax = plt.subplots( figsize=(10,10) ) df['lwage'].plot(kind = 'hist', bins = 100) #Se coloca un titulo al gráfico plt.title('Logaritmo del Salario') txt="Elboración propia Grupo1" plt.figtext(0.5, 0.01, txt, wrap=True, horizontalalignment='center', fontsize=11) plt.show()
Image in a Jupyter notebook
##COMENTARIOS: #El primer gráfico, muestra un distribución asimétrica con la gran mayoría de datos en la parte izquierda, y muy pocos datos en la parte central y derecha. #En el segundo gráfico, con el logaritmo del salario, se puede ver que ahora hau una distribución un poco más simétrica que en el primer caso, ya que los datos ahora se encuentran más centrados y con menor frecuencia en los laterales. #Esta difernecia entre gráficos se va a deber a que cuando se pasa a logatirmos, generalmente para reducir las observaciones atípicas, los datos (en este caso de ingreso) van a tener magnitudes menores, por lo que estas estarán más proxias entre sí, y a su vez, para este caso, estarán formando una distribución parecida a la normal.

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.

# filtro solo aquellas personas que terminaron la universidad y nos quedamos con las variables relevantes para las preguntas df_univ = df[df.clg.isin([1])|df.ad.isin([1])] df_univ = df_univ[["lwage", "sex"]] df_h_m=pd.DataFrame() #agregamos por mujer y hombre y renombramos las columnas df_h_m = df_univ.pivot(columns='sex',values='lwage') df_h_m.columns =['mujer','hombre'] import matplotlib.pyplot as plt #Graficamos la distribución de lwage por sexo df_h_m.plot.density(figsize = (7, 7), linewidth = 4) plt.xlabel("lwage by sex")
Text(0.5, 0, 'lwage by sex')
Image in a Jupyter notebook

Pregunta 3

En un gráfico Pie, muestre el porcentaje de personas según nivel educativo.

##PREGUNTA 3 #Se seleccionan solo las columnas que tienen que ver con el nivel educativo de las personas nivel_educ = df[['shs','hsg','scl','clg','ad']] nivel_educ
#Mediante el comando de groupby junto con count, se agruparán los registros que tengan valor de 1 en cada variable. #Esto permitirá tener la totalidad de personas en cada nivel educativo base = nivel_educ.groupby([ 'shs','hsg','scl','clg','ad' ])['shs'].count() base #Se muestra el resultado, lo cual es contiene los mismos datos que el dataframe pero ahora con los valores totalees de cada columna
shs hsg scl clg ad 0.0 0.0 0.0 0.0 1.0 706 1.0 0.0 1636 1.0 0.0 0.0 1432 1.0 0.0 0.0 0.0 1256 1.0 0.0 0.0 0.0 0.0 120 Name: shs, dtype: int64
##Gráfico Pie: #Se colocan las etiquetas que tendrán de acuerdo al orden del nivel educativo anteriormente establecido en la base labels=['Advanced degree - master or Phd','College gratuate' ,'Some college','High schoool graduate','Some high school'] #Se coloca el tamaño del gráfico plt.figure(figsize=(10,10)) #Se indica que se cree el gráfico como un pie, que se usen los datos de la base, y que este muestre los valores en porcentajes ax = plt.pie(base, labels=labels, autopct='%.1f %%') #Se le coloca el titulo correspondiente plt.title('Porcentaje de personas según nivel educativo') #Se muestra el gráfico plt.show()
Image in a Jupyter notebook

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 mujeres.

# Leo la base de datos en R: rdata_read = pyreadr.read_r("../data/wage2015_subsample_inference.Rdata") # Extraigo la información con rdata_read data = rdata_read[ 'data' ] # Convirtiendo en Pandas.DataFrame: df = pd.DataFrame(data) # variables relevantes para la pregunta 4: df4 = df[["lwage", "ad", "sex"]] # Convierto las variables con .astype() a float o int según corresponda. df4[["ad", "lwage"]].astype("float") df4["sex"].astype("int")
rownames 10 1 12 0 15 0 18 1 19 1 .. 32620 0 32624 1 32626 0 32631 0 32643 0 Name: sex, Length: 5150, dtype: int32
# Es mujer si sex = 1. fig, ax = plt.subplots(figsize=(10,6)) box_female = sns.boxplot(x = "ad", y = "lwage", data = df4[df4['sex'] == 1 ], palette='rainbow') # Le pongo el nombre a los ejes y también título. plt.xlabel('Nivel educativo alcanzado') plt.ylabel('Logaritmo del salario por hora') plt.title("Mujeres") # Como ad representa el grado académico avanzado, primero va ad = 0, que representa "Sin grado académico avanzado", # Luego , ad = 1, que representa "Con grado educativo avanzado" box_female.set_xticklabels(["Sin grado educativo avanzado", "Con grado educativo avanzado"]) plt.show()
Image in a Jupyter notebook
# Es hombre si sex = 0. fig, ax = plt.subplots(figsize=(10,6)) box_male = sns.boxplot(x = "ad", y = "lwage", data = df4[df4['sex'] == 0 ], palette='rainbow') # Le pongo el nombre a los ejes y también título. plt.xlabel('Nivel educativo alcanzado') plt.ylabel('Logaritmo del salario por hora') plt.title("Hombres") # Como ad representa el grado académico avanzado, primero va ad = 0, que representa "Sin grado académico avanzado", # Luego , ad = 1, que representa "Con grado educativo avanzado" box_male.set_xticklabels(["Sin grado educativo avanzado", "Con grado educativo avanzado"]) plt.show()
Image in a Jupyter notebook