Path: blob/main/Trabajo_grupal/WG3/Python_grupo5.py
2714 views
# -*- coding: utf-8 -*-1"""2Created on Sat Sep 17 18:45:09 202234@author: Usuario5"""67#Pregunta 18import numpy as np9import pandas as pd10from pandas import DataFrame,Series11import os # for usernanme y set direcotrio121314# Debemos construir el directorio donde se trabajará1516user = os.getlogin() # Username17print(user)1819# Extraemos los datos del directorio2021os.chdir(f"C:/Users/{user}/Documents/GitHub/1ECO35_2022_2/Lab3") # Set directorio22#Utilizamos pd.read_excel porque se trata de un documento de excel23data_junin = pd.read_excel("../data/Region_Junin.xlsx")24data_junin252627data_junin.info() #mostrar el type de las variables28print( data_junin.shape )2930#Acá mostramos el nombre de las columnas que tiene la data31list(data_junin)3233data_junin.describe() #se presenta las principales estadísticas34#Con null y na nos muestra si se encuentra missing en nuestra data frame; además, sumamos la cantidad de missing35print( data_junin.isnull() )36print( data_junin.isna() )37data_junin.isna().sum()3839#En este paso cambiamos el nombre de las variables con rename40data_junin.rename(columns={'Place':'comunidad',41'men_not_read':'homxlee',42'women_not_read':'mujerxlee',43'total_not_read':'totalxlee'},44inplace=True)45data_junin.columns4647#Aquí creamos una nueva data frame que solo contenga las columnas comunidad y District48data_junin1=data_junin.loc[:,['comunidad','District']]49#Vamos a crear tres nuevas columnas5051#junin_data['mujeres%queleen'] = junin_data['women_not_read']/junin_data['total_not_read']52data_junin['mujeres que no escriben ni leen'] = data_junin['mujerxlee'] / data_junin['totalxlee']53data_junin['varones que no escriben ni leen'] = data_junin['homxlee'] / data_junin['totalxlee']54data_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'])5556#La 7 nos pide crear una nueva data frame con filas57data_junin2 = data_junin.loc[ ( data_junin[ "District" ] == "CIUDAD DEL CERRO")58| ( data_junin[ "District" ] == "JAUJA" )59| ( data_junin[ "District" ] == "ACOLLA" )60| ( data_junin[ "District" ] == "CONCEPCIÓN" )61| ( data_junin[ "District" ] == "SAN GERÓNIMO" )62| ( data_junin[ "District" ] == "TARMA" )63| ( data_junin[ "District" ] == "OROYA" ) ]6465data_junin3 = data_junin2.loc[ ( data_junin[ "natives" ] > 0 )66& ( data_junin[ "mestizos" ] > 0 ) ]6768data_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']]6970data_junin4.to_csv("../data/Base_cleaned_WG(5)")717273#Pregunta 27475np.random.seed(1000) #Establecemos un random seed76pep=np.random.rand(100) #Primero definimos el vector77a=np.min(pep) #Definimos el minimo78b=np.max(pep) #Definimos el maximo7980#Definimos la función de reescalación relacionando un x con el mín y max81def reescalación(x):82return (x-a)/(b-a)8384#Aplicamos la función "reescalación" a cada componente del vector pep con map y list85respuesta = list(map(reescalación, pep))8687print (respuesta)8889pepa=np.random.rand(100,50) #Primero definimos la matriz9091c=np.min(pepa, axis=0)92d=np.max(pepa, axis=0)9394#Aplicamos la función "lambda x" a cada componente de cada columna de la matriz pepa95# "lambda x" se definió como la relación (x-x.min())/(x.max()-x.min())96respuesta2 = np.apply_along_axis(lambda x: (x-x.min())/(x.max()-x.min()),0, pepa)9798print(respuesta2)99100#Pregunta 3101102def funcion (*args, **kwargs): #definimos la funcion que pide el ejercicio103104vector = list(args) #se convierten a lista, ya que args es una tupla105106def sdv(x,mean,sd): #definimos la funcion de estandarizacion107108out = (x-mean)/sd109110return out111112def escalar (x,mini,maxi): #definimos la funcion de escalamiento113escala = (x-mini)/(maxi-mini)114115return escala116117118119if kwargs ['function'] == "estandarizar":120121result = list( map( lambda x, v1 = np.mean(vector), v2 = np.std(vector): sdv(x,v1, v2) , vector) )122123elif kwargs ['function'] == "reescalar":124125result = list (map (lambda x, maximo = np.max(vector), minimo = np.min(vector): escalar(x,minimo,maximo), vector))126127else:128raise ValueError( f"El argumento de la funcion {kwargs[ 'function' ]} no esta disponible." )129130# Mensaje de error por tipo de argumento131132return result133134funcion(1,2,3,4,5,6,7,8,9,10, function = "estandarizar")135funcion (1,3,5,7,9,11,13,15,17,19, function = "reescalar")136137