Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG8/Grupo6_py.py
2714 views
1
# -*- coding: utf-8 -*-
2
"""
3
Created on Sun Nov 13 11:59:28 2022
4
5
@author: HP
6
"""
7
8
9
#########################################################################
10
Tarea 8 - Grupo 6
11
########################################################################
12
13
! pip install pyreadr
14
15
#----------------------------------------------
16
# Antes de responder a las preguntas tenemos que cargar la base de datos, observar los nombre de etiquetas de la base
17
18
import numpy as np
19
import pandas as pd
20
import pyreadr
21
from pandas import Series, DataFrame
22
import matplotlib.pyplot as plt # Es librería para gráficos
23
import seaborn as sns # Es librería para gráficos
24
import datetime as dt # Es librería para fechas
25
import warnings
26
warnings.filterwarnings('ignore') # Para eliminar mensajes de alerta
27
28
#----------------------------------------------
29
# 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é
30
# 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)
31
32
result = pyreadr.read_r("../data//wage2015_subsample_inference.Rdata")
33
base = result['base']
34
data.dtypes
35
print(base)
36
37
# Para El PRIMER GRAFICO de histograma de frecuencias absolutas del salario (wage) utilizamos comando kind= hist
38
# se coloca el título al gráfico y el título a la coordenada de salario
39
40
fig, ax = plt.subplots( figsize=(8,8) ) # para establecer el tamaño del gráfico
41
base['wage'].plot(kind = 'hist', bins = 30) # se le coloca 30 para ver mejor la distribución
42
plt.title('Salario por hora')
43
txt="Elaboración propia del grupo 6"
44
plt.figtext(0.5, 0.01, txt, wrap=True, horizontalalignment='center', fontsize=12)
45
plt.show()
46
47
# Para El SEGUNDO GRAFICO de histograma de frecuencias absolutas del logaritmo del salario (lwage) utilizamos comando kind= hist
48
# indicamos el tamaño del gráfico
49
fig, ax = plt.subplots( figsize=(8,8) )
50
base['lwage'].plot(kind = 'hist', bins = 50) # se le coloca 50 para ver mejor la distribución
51
plt.title('Logaritmo del salario por hora')
52
txt="Elaboración propia del grupo 6"
53
plt.figtext(0.5, 0.01, txt, wrap=True, horizontalalignment='center', fontsize=12)
54
plt.show()
55
56
# 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.
57
58
#----------------------------------------------
59
# 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
60
# Indicamos el tamaño del gráfico, seguido de utilizar el comando kdeplot para gráfico de densidad
61
62
plt.figure(figsize=(10, 5))
63
sns.kdeplot(base.lwage[base.sex == 1], label='Mujer', shade=True,
64
x = 'bwghtlbs',
65
alpha = 0.4,
66
edgecolor="0.1",
67
linewidth=1,
68
color = 'red'
69
)
70
sns.kdeplot(base.lwage[base.sex == 0], label='Hombre', shade=True,
71
x = 'bwghtlbs',
72
alpha = 0.4,
73
edgecolor="0.1",
74
linewidth=1,
75
color = 'blue'
76
)
77
78
plt.legend(labels=['Mujer','Hombre'], title = "", frameon=True, bbox_to_anchor=(1.0, 0.98))
79
plt.title('Grafico de densidad por sexos', size=15)
80
plt.ylabel('Kernel Density')
81
plt.xlabel('Logaritmo del salario por sexos')
82
83
84
#----------------------------------------------
85
# Pregunta 3: En un gráfico Pie, muestre el porcentaje de personas según nivel educativo
86
# Sabemos quehay 5 niveles educativos, por lo que deberíamos tener una sola variable que agrupe a las demás categorías, mediante comando groupby
87
88
base.columns
89
columnas = ['shs','hsg', 'scl', 'clg', 'ad']
90
base_2 = base.filter(columnas)
91
base_2['nivel_educa']=base_2['shs']+base_2['hsg']+base_2['scl']+base_2['clg']+base_2['ad']
92
base_2
93
#Donde
94
# shs: Si la persona tiene secundaria incompleta (Some high school)
95
# shg: secundaria completa (High schoool graduate)
96
# scl: Universitaria incompleta (Some college)
97
# clg: Universitaria completa (College gratuate)
98
# ad: Grado educativo avanzado (Advanced degree - master or Phd)
99
100
basee = base_2.groupby('ad')['ad'].size() # cantidad por tipo de ocupación
101
labels=['No posee un grado educativo avanzado','Posee un grado educativo avanzado']
102
103
fig, ax = plt.subplots( figsize=(5,5) )
104
105
ax = plt.pie(basee, labels=labels, autopct='%.1f %%')
106
plt.title("Secundaria incompleta")
107
plt.ylabel("")
108
plt.show()
109
110
base2 = base_2.groupby('shs')['shs'].size()
111
labels2=['No Posee secundaria incompleta','Posee secundaria incompleta']
112
113
fig, ax = plt.subplots( figsize=(5,10) )
114
115
ax = plt.pie(base2, labels=labels2, autopct='%.1f %%')
116
plt.title("Secundaria incompleta")
117
plt.ylabel("")
118
plt.show()
119
120
base3 = base_2.groupby('scl')['scl'].size() # cantidad por tipo de ocupación
121
labels3=['No posee Universitaria incompleta','Posee Universitaria incompleta']
122
123
fig, ax = plt.subplots( figsize=(5,5) )
124
125
ax = plt.pie(base3, labels=labels3, autopct='%.1f %%')
126
plt.title("Universitaria incompleta")
127
plt.ylabel("")
128
plt.show()
129
130
base4 = base_2.groupby('clg')['clg'].size() # cantidad por tipo de ocupación
131
labels4=['No posee educacion universitaria completa','Posee educacion universitaria completa']
132
133
fig, ax = plt.subplots( figsize=(5,5))
134
ax = plt.pie(base4, labels=labels4, autopct='%.1f %%')
135
plt.title("Universitaria completa")
136
plt.ylabel("")
137
plt.show()
138
139
140
141
142
143
#----------------------------------------------
144
# 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
145
146
147
fig, ax = plt.subplots(figsize=(10,6))
148
149
box = sns.boxplot(x="sex", y="lwage", data=base[base['ad'] == 1 ] ,palette='rainbow', showfliers=False)
150
151
plt.xlabel('sexo')
152
plt.ylabel('Logaritmo del salario por hora')
153
154
(box.set_xticklabels(["Mujer", "Hombre"]))
155
156