Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG3/Grupo_6_py.py
2714 views
1
# -*- coding: utf-8 -*-
2
"""
3
Created on Sat Sep 17 19:29:11 2022
4
5
@author: HP
6
"""
7
8
#%%
9
##### PREGUNTA 1 #####
10
import numpy as np
11
import pandas as pd
12
from pandas import DataFrame,Series
13
14
junin_data = pd.read_excel("/Users/lorenzochiroque/Documents/GitHub/1ECO35_2022_2/data/Region_Junin.xlsx") #Dirección mía, pero podremos editarla en base a la ubicación de nuestra base de datos ;p
15
16
junin_data #Abrimos la base de datos, con esto apreciamos todas las columnas "nom. variables" y alunas filas "".
17
### item 1 -> "Nombre de todas las variables"
18
19
junin_data.head()
20
print( junin_data.shape ) # filas y columnas
21
22
### item 2 -> "Mostrar el tipo de variables (type) así como presentar los principales estadísticos"
23
24
junin_data.info() # podremos ver el tipo de variable con la que estamos trabajando.
25
junin_data.describe() #con describe podremos visualizar los principales estadísticos.
26
27
### item 3 -> "Verifique si las columnas presentan missing values".
28
29
junin_data.isna().sum()
30
31
# Podremos ver que todas las variables con un número mayor a 0, poseen algún missing value. Donde claramente indican cuántos missing values presentan. Así, vemos que la variable PLACE es la que posee más.
32
33
### item 4 -> "Cambie el nombre de las variables (place, men_not_read, women_not_read y total_not_read)".
34
35
junin_data.rename(columns = {'Place':'comunidad', 'men_not_read':'homxlee', 'women_not_read':'mujerxlee', 'total_not_read':'totalxlee'}, inplace = True)
36
37
junin_data.info() #confirmamos el cambio de nombre, al ver las variables
38
39
40
### item 5 -> "Muestre los valores únicos de las siguientes variables (comunidad , District)".
41
junin_data["comunidad"].unique()
42
junin_data["District"].unique()
43
44
# # item 6 -> "Crear columnas con la información indicada"
45
46
#Manera 1 de crear: generando las variables gracias a assign y lambda.
47
junin_data = junin_data.assign(porcentaje_mujerxlee=lambda x: x.mujerxlee / x.totalxlee * 100)
48
junin_data = junin_data.assign(porcentaje_homxlee=lambda x: x.homxlee / x.totalxlee * 100)
49
junin_data = junin_data.assign(porcentaje_nativos=lambda x: x.natives / (x.peruvian_men + x.peruvian_women + x.foreign_men + x.foreign_women)*100)
50
51
junin_data
52
53
#Manera 2 de crear: utilizando las variables y dividiendolas directamente.
54
junin_data['porcentaje_mujerxlee'] = junin_data['mujerxlee'] / junin_data['totalxlee'] * 100
55
junin_data['porcentaje_homblee'] = junin_data['homxlee'] / junin_data['totalxlee'] * 100
56
junin_data['porcentaje_nativos'] = junin_data['natives'] / (junin_data['peruvian_men'] + junin_data['peruvian_women'] + junin_data['foreign_men'] + junin_data['foreign_women'])* 100
57
58
junin_data
59
60
### item 7 -> "Crear la base de datos con la información presentada"
61
62
# a. Quedarse con la información de los distritos de Ciudad del Cerro, Jauja, Acolla, San Gerónimo, Tarma, Oroya y Concepción
63
is_district = (junin_data.District.isin(["ACOLLA","CIUDAD DEL CERRO", "JAUJA", "SAN GERÓNIMO", "TARMA", "OROYA", "CONCEPCIÓN"]))
64
junin_dataa=junin_data[is_district]
65
junin_dataa
66
67
# b. Luego quedarse con las comunidades que cuentan con nativos y mestizos.
68
junin_datab = junin_dataa[(junin_dataa["natives"] > 0) & (junin_dataa["mestizos"] > 0)]
69
junin_datab
70
71
#c. Solo quedarse con las variables trabajadas en el punto 6), nombre de distrito y comunidad.
72
junin_datac = junin_datab.loc[:,['District','comunidad']]
73
junin_datac
74
75
#d. Guardar la base de datos en formato csv en la carpeta data. (Use el siguiente nombre Base_cleaned_WG(numero de grupo)
76
junin_datac.to_csv("/Users/lorenzochiroque/Documents/GitHub/1ECO35_2022_2/data/Base_cleaned_WG(6).csv")
77
78
#%%
79
##### PREGUNTA 2 python #####
80
81
import numpy as np
82
83
np.random.seed(500)
84
np.random.rand(100)
85
86
# Cremos el vector que cuenta con 100 observaciones
87
vector = np.arange(100)
88
89
# Fijamos el minimo y maximo de nuestro vector
90
minimo = np.min(vector)
91
maximo = np.max(vector)
92
93
# Definimos la funcion X
94
def function(x):
95
96
# Realizamos la reescala para esa funcion.
97
escalar = (x-min(x))/(max(x)-min(x))
98
return escalar
99
100
list( map( lambda x: function(x) , vector) )
101
102
# Creamos las variables hasta X4, de modo que todas tienen distribución uniforme
103
np.random.seed(500)
104
x1 = np.random.rand(100) # uniform distribution [0,1]
105
x2 = np.random.rand(100) # uniform distribution [0,1]
106
x3 = np.random.rand(100) # uniform distribution [0,1]
107
x4 = np.random.rand(100) # uniform distribution [0,1]
108
109
X = np.column_stack((np.ones(100),x1,x2,x3,x4))
110
111
112
np.min(X, axis=0) # axis = 0 (se aplica por columnas)
113
np.max(X, axis=0)
114
115
#%%
116
##### PREGUNTA 3 #####
117
118
import numpy as np
119
import pandas as pd
120
from pandas import DataFrame, Series
121
import statistics
122
import inspect
123
124
# Definiendo la funcion args para la aplicacion de operaciones al vector
125
def function(*args):
126
print(args)
127
for u in args:
128
print(u)
129
130
# Creando un vector de 6 elementos utilizando la librería numpy
131
a = np.random.randint(0,20,5)
132
print(a)
133
134
# Definiendo y Construyendo la función mediante **kwargs
135
def f(*x,**kwargs):
136
return (x-np.mean(x))/np.std(x)
137
for i in a:
138
print (f(a))
139
140
141