Path: blob/main/Trabajo_grupal/WG3/Grupo_8_py.py
2714 views
# -*- coding: utf-8 -*-1"""2Created on Sat Sep 17 09:49:56 202234@author: Grupo 85Integrantes:6Mariel León7Erika Olivera8Jorge Moya9Maria Nechochea1011"""12#%%Pregunta11314import numpy as np15import pandas as pd16from pandas import DataFrame, Series17import os1819user = os.getlogin() # Username20print(user)2122#Primero corremos el directorio e importamos la base de datos23os.chdir(f"C:/Users/{user}/Documents/GitHub/1ECO35_2022_2/data")24junin_data = pd.read_excel('Region_Junin.xlsx')2526#1.-Obtenemos los nombres y tipos de mis variables27print(junin_data.info())2829#2.-Mostramos los principales datos estadisticos: mediana, media, minimo, max, primer quintil,tercer quintil30print(junin_data.describe())3132#3.-Verificamos qué variables presentan missing values. Al correr cada código, se mostrará el número de missing values que presenta cada variable.3334print(junin_data['Region'].isna().sum())35print(junin_data['District'].isna().sum())36print(junin_data['Place'].isna().sum())37print(junin_data['4_6_years_men'].isna().sum())38print(junin_data['4_6_years_women'].isna().sum())39print(junin_data['4_6_years_total'].isna().sum())40print(junin_data['6_14_years_men'].isna().sum())41print(junin_data['6_14_years_women'].isna().sum())42print(junin_data['6_14_years_total'].isna().sum())43print(junin_data['man_read'].isna().sum())44print(junin_data['women_read'].isna().sum())45print(junin_data['total_read'].isna().sum())46print(junin_data['men_not_read'].isna().sum())47print(junin_data['women_not_read'].isna().sum())48print(junin_data['total_not_read'].isna().sum())49print(junin_data['man_write'].isna().sum())50print(junin_data['women_write'].isna().sum())51print(junin_data['total_write'].isna().sum())52print(junin_data['men_not_write'].isna().sum())53print(junin_data['women_not_write'].isna().sum())54print(junin_data['total_not_write'].isna().sum())55print(junin_data['instruction_men'].isna().sum())56print(junin_data['instruction_women'].isna().sum())57print(junin_data['instruction_total'].isna().sum())58print(junin_data['no_instruction_men'].isna().sum())59print(junin_data['no_instruction_women'].isna().sum())60print(junin_data['no_instruction_total'].isna().sum())61print(junin_data['finished_instr_men'].isna().sum())62print(junin_data['finished_instr_women'].isna().sum())63print(junin_data['finished_instr_total'].isna().sum())64print(junin_data['not_finished_instr_men'].isna().sum())65print(junin_data['not_finished_instr_women'].isna().sum())66print(junin_data['not_finished_instr_total'].isna().sum())67print(junin_data['peruvian_men'].isna().sum())68print(junin_data['peruvian_women'].isna().sum())69print(junin_data['foreign_men'].isna().sum())70print(junin_data['foreign_women'].isna().sum())71print(junin_data['whites'].isna().sum())72print(junin_data['natives'].isna().sum())73print(junin_data['mestizos'].isna().sum())74print(junin_data['blacks'].isna().sum())7576#4.-Cambiamos nombres a las siguientes variables:77#comunidad en lugar de place, homxlee en lugar de men_not_read,78#mujerxlee en lugar de woman_not_read y totalxlee en lugar de total_not_read7980print(junin_data.rename(columns = {'Place':'Comunidad', 'men_not_read':'Homxlee', 'women_not_read':'Mujerxlee', 'total_not_read': 'Totalxlee'}, inplace = True))8182#5.-Muestre los valores únicos de las siguientes variables ( comunidad , District)8384print( junin_data.Comunidad.unique() )85print( junin_data.District.unique() )8687#6.-Crear columnas con las siguiente información:88#el % de mujeres del que no escriben ni leen (mujerxlee/totalxlee)8990#para hallar el % de las mujeres que no leen multiplicamos por 100 a la división (mujerxlee/totalxlee)91junin_data['%mujeresnoleen'] = 100 * junin_data['Mujerxlee'] / junin_data['Totalxlee']92#para hallar el % de las mujeres que no escriben multiplicamos por 100 a la división (mujerxlee/totalxlee)93junin_data['%mujeresnoescriben'] = 100 * junin_data['women_not_write'] / junin_data['total_not_write']9495#% de varones que no escriben ni leen (homxlee/totalxlee)96#se realiza el mismo procedimiento que para mujeres97junin_data['%hombresnoleen'] = 100 * junin_data['Homxlee'] / junin_data['Totalxlee']98junin_data['%hombresnoescriben'] = 100 * junin_data['men_not_write'] / junin_data['total_not_write']99100#% de nativos respecto al total de la población.101#primero creamos una variable "población total" que suma mujeres y hombres peruanos y extranjeros102junin_data['poblacióntotal']= junin_data['peruvian_women'] + junin_data['peruvian_men'] + junin_data['foreign_women'] + junin_data['foreign_men']103#hallamos el % de nativos respecto al total de la población104junin_data['%nativos'] = 100 * junin_data['natives'] / junin_data['poblacióntotal']105106#7.-Crear una base de datos con la siguiente información:107#a. Quedarse con la información de los distritos de Ciudad del Cerro, Jauja, Acolla, San Gerónimo, Tarma, Oroya y Concepción108109Base_nueva = junin_data[junin_data["District"].isin(["CIUDAD DEL CERRO", "JAUJA", "SAN GERÓNIMO", "TARMA", "OROYA", "CONCEPCIÓN"])]110111# b. Luego quedarse con las comunidades que cuentan con nativos y mestizos.112113Base_nueva_con_nativos = Base_nueva[Base_nueva["natives"] > 0 ]114Base_nueva_con_mestizos_y_nativos = Base_nueva_con_nativos[Base_nueva_con_nativos["mestizos"] > 0 ]115116# c. Solo quedarse con las variables trabajadas en el punto 6), nombre de distrito y comunidad.117118Base_final = Base_nueva[["District", "Comunidad", "%mujeresnoleen", "%mujeresnoescriben", "%hombresnoleen", "%hombresnoescriben", "poblacióntotal", "%nativos"]]119120# d. Guardar la base de datos en formato csv en la carpeta data.121122junin_data.to_csv("../data/Base_cleaned_WG(8).csv")123124125126#%%Pregunta 2127128import numpy as np129import pandas as pd130from pandas import DataFrame, Series131import statistics132import inspect # Permite conocer los argumentos de una función , classes, etc133134#creamos vector de 100 observaciones135vector = np.arange (100)136137#creamos una matriz "M"138M = 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 100x50139140#Reescalamos los datos del vector utilizando map141def sdv(x,min, max):142143out = (x-min)/max-min144145return out146147list( map( lambda x, v1 = np.min(vector), v2 = np.max(vector): sdv(x,v1, v2) , vector) )148149vector1 = (vector - np.min(vector))/np.max(vector)-np.min(vector)150151#Reescalamos datos de la matriz M utilizando apply_along_axis152np.min(M, axis=0) # axis = 0 (se aplica por columnas)153print(np.min(M, axis=0) )154np.max(M, axis=0)155print(np.max(M, axis=0))156157M_std = np.apply_along_axis(lambda m: (m-m.min())/(m.max()-m.min()),0, M)158159#%%Pregunta 3160161import numpy as np162163# Usamos kwargs para definir las operaciones y args para el vector164def calculator( *args, **kwargs):165166print( type( args ) )167print( type( kwargs ) )168169# Para estandarizar170if ( kwargs[ 'function' ] == "estandarizar" ) :171172# Get the first value173result = (args - np.mean(args))/np.std(args)174# Para reescalar175elif ( kwargs[ 'function' ] == "reescalar" ) :176177result = (args - np.min(args))/(np.max(args)-np.min(args))178179# Mensaje de error por tipo de argumento180else:181raise ValueError( f"The function argument {kwargs[ 'function' ]} is not supported." )182183return result184185# Que corra el código186calculator( 4, 5, 6, 7, 8, function = "estandarizar" )187188calculator( 4, 5, 6, function = "reescalar" )189190191