Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG3/Python_grupo5.py
2714 views
1
# -*- coding: utf-8 -*-
2
"""
3
Created on Sat Sep 17 18:45:09 2022
4
5
@author: Usuario
6
"""
7
8
#Pregunta 1
9
import numpy as np
10
import pandas as pd
11
from pandas import DataFrame,Series
12
import os # for usernanme y set direcotrio
13
14
15
# Debemos construir el directorio donde se trabajará
16
17
user = os.getlogin() # Username
18
print(user)
19
20
# Extraemos los datos del directorio
21
22
os.chdir(f"C:/Users/{user}/Documents/GitHub/1ECO35_2022_2/Lab3") # Set directorio
23
#Utilizamos pd.read_excel porque se trata de un documento de excel
24
data_junin = pd.read_excel("../data/Region_Junin.xlsx")
25
data_junin
26
27
28
data_junin.info() #mostrar el type de las variables
29
print( data_junin.shape )
30
31
#Acá mostramos el nombre de las columnas que tiene la data
32
list(data_junin)
33
34
data_junin.describe() #se presenta las principales estadísticas
35
#Con null y na nos muestra si se encuentra missing en nuestra data frame; además, sumamos la cantidad de missing
36
print( data_junin.isnull() )
37
print( data_junin.isna() )
38
data_junin.isna().sum()
39
40
#En este paso cambiamos el nombre de las variables con rename
41
data_junin.rename(columns={'Place':'comunidad',
42
'men_not_read':'homxlee',
43
'women_not_read':'mujerxlee',
44
'total_not_read':'totalxlee'},
45
inplace=True)
46
data_junin.columns
47
48
#Aquí creamos una nueva data frame que solo contenga las columnas comunidad y District
49
data_junin1=data_junin.loc[:,['comunidad','District']]
50
#Vamos a crear tres nuevas columnas
51
52
#junin_data['mujeres%queleen'] = junin_data['women_not_read']/junin_data['total_not_read']
53
data_junin['mujeres que no escriben ni leen'] = data_junin['mujerxlee'] / data_junin['totalxlee']
54
data_junin['varones que no escriben ni leen'] = data_junin['homxlee'] / data_junin['totalxlee']
55
data_junin['Nativos con respecto al total de la población'] = data_junin['natives']/(data_junin['peruvian_men'] + data_junin['peruvian_women'] + data_junin['foreign_men'] + data_junin['foreign_women'])
56
57
#La 7 nos pide crear una nueva data frame con filas
58
data_junin2 = data_junin.loc[ ( data_junin[ "District" ] == "CIUDAD DEL CERRO")
59
| ( data_junin[ "District" ] == "JAUJA" )
60
| ( data_junin[ "District" ] == "ACOLLA" )
61
| ( data_junin[ "District" ] == "CONCEPCIÓN" )
62
| ( data_junin[ "District" ] == "SAN GERÓNIMO" )
63
| ( data_junin[ "District" ] == "TARMA" )
64
| ( data_junin[ "District" ] == "OROYA" ) ]
65
66
data_junin3 = data_junin2.loc[ ( data_junin[ "natives" ] > 0 )
67
& ( data_junin[ "mestizos" ] > 0 ) ]
68
69
data_junin4=data_junin3.loc[:,['comunidad','District','mujeres que no escriben ni leen','varones que no escriben ni leen','Nativos con respecto al total de la población']]
70
71
data_junin4.to_csv("../data/Base_cleaned_WG(5)")
72
73
74
#Pregunta 2
75
76
np.random.seed(1000) #Establecemos un random seed
77
pep=np.random.rand(100) #Primero definimos el vector
78
a=np.min(pep) #Definimos el minimo
79
b=np.max(pep) #Definimos el maximo
80
81
#Definimos la función de reescalación relacionando un x con el mín y max
82
def reescalación(x):
83
return (x-a)/(b-a)
84
85
#Aplicamos la función "reescalación" a cada componente del vector pep con map y list
86
respuesta = list(map(reescalación, pep))
87
88
print (respuesta)
89
90
pepa=np.random.rand(100,50) #Primero definimos la matriz
91
92
c=np.min(pepa, axis=0)
93
d=np.max(pepa, axis=0)
94
95
#Aplicamos la función "lambda x" a cada componente de cada columna de la matriz pepa
96
# "lambda x" se definió como la relación (x-x.min())/(x.max()-x.min())
97
respuesta2 = np.apply_along_axis(lambda x: (x-x.min())/(x.max()-x.min()),0, pepa)
98
99
print(respuesta2)
100
101
#Pregunta 3
102
103
def funcion (*args, **kwargs): #definimos la funcion que pide el ejercicio
104
105
vector = list(args) #se convierten a lista, ya que args es una tupla
106
107
def sdv(x,mean,sd): #definimos la funcion de estandarizacion
108
109
out = (x-mean)/sd
110
111
return out
112
113
def escalar (x,mini,maxi): #definimos la funcion de escalamiento
114
escala = (x-mini)/(maxi-mini)
115
116
return escala
117
118
119
120
if kwargs ['function'] == "estandarizar":
121
122
result = list( map( lambda x, v1 = np.mean(vector), v2 = np.std(vector): sdv(x,v1, v2) , vector) )
123
124
elif kwargs ['function'] == "reescalar":
125
126
result = list (map (lambda x, maximo = np.max(vector), minimo = np.min(vector): escalar(x,minimo,maximo), vector))
127
128
else:
129
raise ValueError( f"El argumento de la funcion {kwargs[ 'function' ]} no esta disponible." )
130
131
# Mensaje de error por tipo de argumento
132
133
return result
134
135
funcion(1,2,3,4,5,6,7,8,9,10, function = "estandarizar")
136
funcion (1,3,5,7,9,11,13,15,17,19, function = "reescalar")
137