Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG3/GRUPO_4_py
2714 views
# -*- coding: utf-8 -*-
"""
Created on Wed Sep 14 21:31:27 2022

@author: Flavia
"""

# TAREA 3 
# WG4

##############################################################################
#                                                                            #
#                                 PREGUNTA 1                                 #
#                                                                            #
##############################################################################

import numpy as np
import pandas as pd
import statistics 
from pandas import DataFrame, Series
import os # for usernanme 

#### Debemos construir el directorio donde se trabajará y subir la base de datos 
user = os.getlogin()   # Username
print(user)

os.chdir(f"C:/Users/{user}/Documents/GitHub/1ECO35_2022_2/data")

junin_data = pd.read_excel("../data/Region_Junin.xlsx") # Subir base de datos
junin_data

#%% 1. Obtener el nombre de todas las variables

#### Ya que el nombre de las variables se ubica en las columnas, usamos "col"
for col in junin_data.columns:
    print(col)

#### También podemos hacerlo así:
print(junin_data.columns.values)


#%% 2. Mostrar el tipo de variables (type) así como presentar los principales estadísticos.

#### Para el tipo de variable usamos:
junin_data.info()
### Después de correrlo, sabemos que hay 24 floats, 15 intergers y 3 objetos.

#### Media de todas las variables:
df = pd.DataFrame(junin_data)
df.mean(axis=0)

#### Varianza:
df.var(axis=0)

#### Desviación estándar:
df.std(axis=0)

#### Mediana:
df.median(axis=0)

#%% 3. Verifique si las columnas presentan missing values

print( junin_data.isnull() )
#### Notamos que sí existen missing values, así que procedemos a contar cuántos hay:

junin_data.isnull().sum()

#%% 4. Cambie el nombre de las siguientes variables:
# place : comunidad
# men_not_read: homxlee
# women_not_read: mujerxlee
# total_not_read: totalxlee

junin_data.rename(columns = {'Place':'Comunidad', 'men_not_read':'homxlee', 'women_not_read':'mujerxlee', 'total_not_read': 'totalxlee'}, inplace = True)

junin_data
#%% 5. Muestre los valores únicos de las siguientes variables ( Comunidad , District)

junin_data['Comunidad'].unique()
junin_data['District'].unique()

#%% 6. Crear columnas con las siguiente información:
    
#### % de mujeres del que no escriben ni leen (mujerxlee/totalxlee) 

junin_data['pmujxl%'] = junin_data['mujerxlee'] / junin_data['totalxlee'] * 100

#### % de varones que no escriben ni leen (homxlee/totalxlee)

junin_data['phomxl%'] = junin_data['homxlee'] / junin_data['totalxlee'] * 100

#### % de nativos respecto al total de la población. 

# Para el total de la población sumar (peruvian_men + peruvian_women + foreign_men + foreign_women)

junin_data['totplo'] = junin_data['peruvian_men'] + junin_data['peruvian_women'] + junin_data['foreign_men'] + junin_data['foreign_women'] 

# Ahora sí podemos hallar el porcentaje de nativos

junin_data['pnative%'] = junin_data['natives'] / junin_data['totplo'] * 100

#%% 7. Crear una base de datos con la siguiente información:

#a. Quedarse con la información de los distritos de Ciudad del Cerro, Jauja, Acolla, San Gerónimo, Tarma, Oroya y Concepción

junin_data1 = junin_data[junin_data["District"].isin(["CIUDAD DEL CERRO","JAUJA","ACOLLA","SAN GERÓNIMO","TARMA","OROYA","CONCEPCIÓN"])]

#b. Luego quedarse con las comunidades que cuentan con nativos y mestizos.

junin_data2 = junin_data1.loc[ ( junin_data1[ "natives"] > 0 )
                              & ( junin_data1["mestizos"] > 0 ) ]
                                           
#c. Solo quedarse con las variables trabajadas en el punto 7), nombre de distrito y comunidad.

junin_data3 = junin_data2[["District", "Comunidad"]]

#d. Guardar la base de datos en formato csv en la carpeta data. (Use el siguiente nombre Base_cleaned_WG(numero de grupo)

junin_data3.to_csv("../Based_cleaned_WG4.csv")


#%% PREGUNTA 2


#### Importamos las librerías necesarias

import numpy as np
import pandas as pd
from pandas import DataFrame, Series
import statistics
import inspect  

#### Creamos el vector con 100 observaciones 

v= np.arange(100)

print(v)


#### Definimos la función de escalamiento para el vector

def escalar(x,a,b):
    
    result = (x-a)/(b-a)
    
    return result 


#### Obtenemos el vector reescalado

list(map( lambda x,  a= min(v), b= max(v): escalar(x,a,b) , v))



#### Creamos la matriz de 100 x 50 

m=np.random.randint(0, 101, (100, 50)) 


#### Definimos la función de escalamiento para la matriz y usamos apply along axis

def escalar_m(x):
       out = (x - min(x))/(max(x)-min(x))
          
       return out
   
m_reescalado = np.apply_along_axis(escalar_m,0, m)


#### Obtenemos la matriz reescalada
    
print (m_reescalado)

#%% PREGUNTA 3

m=np.random.randint(0, 101, (100, 50)) 

#### La función que debemos estandarizar y escalar es

def escalar_m(x):
       out = (x - min(x))/(max(x)-min(x))
          
       return out

def calculador (*args, **kwargs): 
    
    print( type( args) )
    print( type( kwargs ) )

    if ( kwargs[ 'function' ] == "escalar" ):
      result = np.standar ( args)

    elif ( kwargs[ 'function' ] == "estandarizar" ):
     result = np.standarize (args) 
                       
return result 

calculator ( np.apply_along_axis(escalar_m,0, m)), function =  "escalar" )
calculator( np.apply_along_axis(standarize,0, X)), function = "estandarizar" )