Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG3/Grupo_8_py.py
2714 views
1
# -*- coding: utf-8 -*-
2
"""
3
Created on Sat Sep 17 09:49:56 2022
4
5
@author: Grupo 8
6
Integrantes:
7
Mariel León
8
Erika Olivera
9
Jorge Moya
10
Maria Nechochea
11
12
"""
13
#%%Pregunta1
14
15
import numpy as np
16
import pandas as pd
17
from pandas import DataFrame, Series
18
import os
19
20
user = os.getlogin() # Username
21
print(user)
22
23
#Primero corremos el directorio e importamos la base de datos
24
os.chdir(f"C:/Users/{user}/Documents/GitHub/1ECO35_2022_2/data")
25
junin_data = pd.read_excel('Region_Junin.xlsx')
26
27
#1.-Obtenemos los nombres y tipos de mis variables
28
print(junin_data.info())
29
30
#2.-Mostramos los principales datos estadisticos: mediana, media, minimo, max, primer quintil,tercer quintil
31
print(junin_data.describe())
32
33
#3.-Verificamos qué variables presentan missing values. Al correr cada código, se mostrará el número de missing values que presenta cada variable.
34
35
print(junin_data['Region'].isna().sum())
36
print(junin_data['District'].isna().sum())
37
print(junin_data['Place'].isna().sum())
38
print(junin_data['4_6_years_men'].isna().sum())
39
print(junin_data['4_6_years_women'].isna().sum())
40
print(junin_data['4_6_years_total'].isna().sum())
41
print(junin_data['6_14_years_men'].isna().sum())
42
print(junin_data['6_14_years_women'].isna().sum())
43
print(junin_data['6_14_years_total'].isna().sum())
44
print(junin_data['man_read'].isna().sum())
45
print(junin_data['women_read'].isna().sum())
46
print(junin_data['total_read'].isna().sum())
47
print(junin_data['men_not_read'].isna().sum())
48
print(junin_data['women_not_read'].isna().sum())
49
print(junin_data['total_not_read'].isna().sum())
50
print(junin_data['man_write'].isna().sum())
51
print(junin_data['women_write'].isna().sum())
52
print(junin_data['total_write'].isna().sum())
53
print(junin_data['men_not_write'].isna().sum())
54
print(junin_data['women_not_write'].isna().sum())
55
print(junin_data['total_not_write'].isna().sum())
56
print(junin_data['instruction_men'].isna().sum())
57
print(junin_data['instruction_women'].isna().sum())
58
print(junin_data['instruction_total'].isna().sum())
59
print(junin_data['no_instruction_men'].isna().sum())
60
print(junin_data['no_instruction_women'].isna().sum())
61
print(junin_data['no_instruction_total'].isna().sum())
62
print(junin_data['finished_instr_men'].isna().sum())
63
print(junin_data['finished_instr_women'].isna().sum())
64
print(junin_data['finished_instr_total'].isna().sum())
65
print(junin_data['not_finished_instr_men'].isna().sum())
66
print(junin_data['not_finished_instr_women'].isna().sum())
67
print(junin_data['not_finished_instr_total'].isna().sum())
68
print(junin_data['peruvian_men'].isna().sum())
69
print(junin_data['peruvian_women'].isna().sum())
70
print(junin_data['foreign_men'].isna().sum())
71
print(junin_data['foreign_women'].isna().sum())
72
print(junin_data['whites'].isna().sum())
73
print(junin_data['natives'].isna().sum())
74
print(junin_data['mestizos'].isna().sum())
75
print(junin_data['blacks'].isna().sum())
76
77
#4.-Cambiamos nombres a las siguientes variables:
78
#comunidad en lugar de place, homxlee en lugar de men_not_read,
79
#mujerxlee en lugar de woman_not_read y totalxlee en lugar de total_not_read
80
81
print(junin_data.rename(columns = {'Place':'Comunidad', 'men_not_read':'Homxlee', 'women_not_read':'Mujerxlee', 'total_not_read': 'Totalxlee'}, inplace = True))
82
83
#5.-Muestre los valores únicos de las siguientes variables ( comunidad , District)
84
85
print( junin_data.Comunidad.unique() )
86
print( junin_data.District.unique() )
87
88
#6.-Crear columnas con las siguiente información:
89
#el % de mujeres del que no escriben ni leen (mujerxlee/totalxlee)
90
91
#para hallar el % de las mujeres que no leen multiplicamos por 100 a la división (mujerxlee/totalxlee)
92
junin_data['%mujeresnoleen'] = 100 * junin_data['Mujerxlee'] / junin_data['Totalxlee']
93
#para hallar el % de las mujeres que no escriben multiplicamos por 100 a la división (mujerxlee/totalxlee)
94
junin_data['%mujeresnoescriben'] = 100 * junin_data['women_not_write'] / junin_data['total_not_write']
95
96
#% de varones que no escriben ni leen (homxlee/totalxlee)
97
#se realiza el mismo procedimiento que para mujeres
98
junin_data['%hombresnoleen'] = 100 * junin_data['Homxlee'] / junin_data['Totalxlee']
99
junin_data['%hombresnoescriben'] = 100 * junin_data['men_not_write'] / junin_data['total_not_write']
100
101
#% de nativos respecto al total de la población.
102
#primero creamos una variable "población total" que suma mujeres y hombres peruanos y extranjeros
103
junin_data['poblacióntotal']= junin_data['peruvian_women'] + junin_data['peruvian_men'] + junin_data['foreign_women'] + junin_data['foreign_men']
104
#hallamos el % de nativos respecto al total de la población
105
junin_data['%nativos'] = 100 * junin_data['natives'] / junin_data['poblacióntotal']
106
107
#7.-Crear una base de datos con la siguiente información:
108
#a. Quedarse con la información de los distritos de Ciudad del Cerro, Jauja, Acolla, San Gerónimo, Tarma, Oroya y Concepción
109
110
Base_nueva = junin_data[junin_data["District"].isin(["CIUDAD DEL CERRO", "JAUJA", "SAN GERÓNIMO", "TARMA", "OROYA", "CONCEPCIÓN"])]
111
112
# b. Luego quedarse con las comunidades que cuentan con nativos y mestizos.
113
114
Base_nueva_con_nativos = Base_nueva[Base_nueva["natives"] > 0 ]
115
Base_nueva_con_mestizos_y_nativos = Base_nueva_con_nativos[Base_nueva_con_nativos["mestizos"] > 0 ]
116
117
# c. Solo quedarse con las variables trabajadas en el punto 6), nombre de distrito y comunidad.
118
119
Base_final = Base_nueva[["District", "Comunidad", "%mujeresnoleen", "%mujeresnoescriben", "%hombresnoleen", "%hombresnoescriben", "poblacióntotal", "%nativos"]]
120
121
# d. Guardar la base de datos en formato csv en la carpeta data.
122
123
junin_data.to_csv("../data/Base_cleaned_WG(8).csv")
124
125
126
127
#%%Pregunta 2
128
129
import numpy as np
130
import pandas as pd
131
from pandas import DataFrame, Series
132
import statistics
133
import inspect # Permite conocer los argumentos de una función , classes, etc
134
135
#creamos vector de 100 observaciones
136
vector = np.arange (100)
137
138
#creamos una matriz "M"
139
M = np.arange(0,5000).reshape (100, 50) #esta tiene valores del 0 al 4999 y se utiliza el "reshape" para que sea una matriz de 100x50
140
141
#Reescalamos los datos del vector utilizando map
142
def sdv(x,min, max):
143
144
out = (x-min)/max-min
145
146
return out
147
148
list( map( lambda x, v1 = np.min(vector), v2 = np.max(vector): sdv(x,v1, v2) , vector) )
149
150
vector1 = (vector - np.min(vector))/np.max(vector)-np.min(vector)
151
152
#Reescalamos datos de la matriz M utilizando apply_along_axis
153
np.min(M, axis=0) # axis = 0 (se aplica por columnas)
154
print(np.min(M, axis=0) )
155
np.max(M, axis=0)
156
print(np.max(M, axis=0))
157
158
M_std = np.apply_along_axis(lambda m: (m-m.min())/(m.max()-m.min()),0, M)
159
160
#%%Pregunta 3
161
162
import numpy as np
163
164
# Usamos kwargs para definir las operaciones y args para el vector
165
def calculator( *args, **kwargs):
166
167
print( type( args ) )
168
print( type( kwargs ) )
169
170
# Para estandarizar
171
if ( kwargs[ 'function' ] == "estandarizar" ) :
172
173
# Get the first value
174
result = (args - np.mean(args))/np.std(args)
175
# Para reescalar
176
elif ( kwargs[ 'function' ] == "reescalar" ) :
177
178
result = (args - np.min(args))/(np.max(args)-np.min(args))
179
180
# Mensaje de error por tipo de argumento
181
else:
182
raise ValueError( f"The function argument {kwargs[ 'function' ]} is not supported." )
183
184
return result
185
186
# Que corra el código
187
calculator( 4, 5, 6, 7, 8, function = "estandarizar" )
188
189
calculator( 4, 5, 6, function = "reescalar" )
190
191