Mi nombre es Juan Carrillo. El objetivo de este notebook es resolver el problema 3
Ejercicio No. 3 - Amigos congueros • Entre en contacto con 10 estudiantes del curso de datos y 2 profesores o personal de soporte de LaConga, uno del curso de datos y otro de afuera, y consulte su nombre completo, su nombre de usuario en mattermost, edad, pais de origen, ciudad donde residen, su especialidad científica, nombre del instituto en que estudian/laboran, y un hobbie o afición. • Cree un diccionario llamado “compas”, donde la llave sea el nombre de usuario en mattermost, y si depliego el valor almacenado, por ejemplo en compas[“juan-pineda”], lo que obtengo es a la vez otro diccionario, con las llaves “nombre”, “apellido”, “país”, “residencia”, “edad”, “institución”, “hobbie”.
Para este punto se define la variable compas como un dictionary, y se pobla con los datos reunidos a través de Mattermost a manera de un nested dictionary
compas = dict()
compas = {
'juan-pineda' : {
'Nombre': 'Juan Carlos Basto Pineda' ,
'País': 'Colombia' ,
'Ciudad': 'Bucaramanga' ,
'Edad': 37 ,
'Institución': 'Universidad Industrial de Santander (UIS)' ,
'Especialidad': 'Astronomía' ,
'Hobbie': ['Dibjujar','Caminatas']} ,
'afont' : {
'Nombre': 'Anamaría Font Villarroel' ,
'País': 'Venezuela' ,
'Ciudad': 'Munich' ,
'Edad': 61 ,
'Institución': 'Universidad Central de Venezuela' ,
'Especialidad': 'Física de campos y partículas' ,
'Hobbie': ['Leer']} ,
'cristian.velandia' : {
'Nombre': 'Cristian Velandia' ,
'País': 'Colombia' ,
'Ciudad': 'Colombia' ,
'Edad': 27 ,
'Institución': 'Universidad Nacional de Colombia' ,
'Especialidad': 'Óptica' ,
'Hobbie': ['Anime', 'videojuegos']} ,
'acerot' : {
'Nombre': 'Tatiana Acero Cuellar' ,
'País': 'Colombia' ,
'Ciudad': 'Bogotá' ,
'Edad': 23 ,
'Institución': 'Universidad Nacional de Colombia' ,
'Especialidad': 'Mecánica Celeste Relativista' ,
'Hobbie': ['Anime']} ,
'aldo' : {
'Nombre': 'Aldo Arriola Córdova' ,
'País': 'Perú' ,
'Ciudad': 'Lima' ,
'Edad': 28 ,
'Institución': 'Universidad Nacional de Ingeniería' ,
'Especialidad': 'Magnetismo' ,
'Hobbie': ['Música', 'Películas','Caminar']} ,
'andreatugores' : {
'Nombre': 'Andrea Carolina Tugores Hernández' ,
'País': 'Venezuela' ,
'Ciudad': 'Caracas' ,
'Edad': 24 ,
'Institución': 'Universidad Central de Venezuela' ,
'Especialidad': 'Física médica' ,
'Hobbie': ['Tennis']} ,
'bermudezj' : {
'Nombre': 'Jesus David Bermudez Sanchez' ,
'País': 'Colombia' ,
'Ciudad': 'Bogotá' ,
'Edad': 25 ,
'Institución': 'Universidad Nacional de Colombia' ,
'Especialidad': 'Estado Solido' ,
'Hobbie': ['Senderismo','Ciclismo']} ,
'fernandezn' : {
'Nombre': 'Nicolás Fernández Cinquepalmi' ,
'País': 'Argentina' ,
'Ciudad': 'Lima' ,
'Edad': 27 ,
'Institución': 'Universidad Nacional Mayor de San Marcos' ,
'Especialidad': 'Física Nuclear' ,
'Hobbie': ['Piano']} ,
'leonl' : {
'Nombre': 'Luis Alberto León Andonayre' ,
'País': 'Perú' ,
'Ciudad': 'Provincia Constitucional del Callao' ,
'Edad': 22 ,
'Institución': 'Universidad Nacional Mayor de San Marcos' ,
'Especialidad': 'Gravitación' ,
'Hobbie': ['Música','Guitarra']} ,
'grisalesj' : {
'Nombre': 'Jennifer Grisales Casadiegos' ,
'País': 'Colombia' ,
'Ciudad': 'Bucaramanga' ,
'Edad': 27 ,
'Institución': 'Universidad Industrial de Santander (UIS)' ,
'Especialidad': 'Astropartículas' ,
'Hobbie': ['Rugby']} ,
'navasa' : {
'Nombre': 'Alfonso Navas' ,
'País': 'Colombia' ,
'Ciudad': 'Bogotá' ,
'Edad': 24 ,
'Institución': 'Universidad Nacional de Colombia' ,
'Especialidad': 'Ecología' ,
'Hobbie': ['Crossfit']} ,
'semprumg' : {
'Nombre': 'Gerardo Jesus Semprum Suarez' ,
'País': 'Venezuela' ,
'Ciudad': 'Caracas' ,
'Edad': 24 ,
'Institución': 'Universidad Central de Venezuela' ,
'Especialidad': 'Geofísica' ,
'Hobbie': ['Artes Marciales']} ,
}
• Cree una función que reciba como entrada el diccionario y un país de origen, y retorne las informaciones completas de todas las personas de ese país, tabuladas en una forma fácil de entender.
Se define la función Amigos_congueros que recibe como entrada el dicitonary que se desea filtrar, en este caso compas, y solicita al usuario digitar el país del cuál desea tener información
A través de un ciclo for la función itera dentro de los valores del dictionary y busca aquellos donde la información del país de origen sea igual a la digita por el usuario y añade dicha información a un dictionario llamado filtereddic, debido a que las llaves son los nombres de mattermost que son unicos no hay problema con sobre-escritura de información
Finalmente para mostrar a manera tabulada la información filtrada se convierte el dictionary a un dataframe dandole uso a la función de creación DataFrame usando from_dict de Pandas
import pandas as pd
def Amigos_congueros(dic):
pais = str(input('Digite País: '))
filtereddic = dict()
for key in dic:
if dic[key]['País'] == pais:
filtereddic[key]=dic[key]
df = pd.DataFrame.from_dict(filtereddic,orient='index')
return df
Acá se muestra la información ejemplo filtrando por el país Colombia
Amigos_congueros(compas)
Digite País: Colombia
Nombre | País | Ciudad | Edad | Institución | Especialidad | Hobbie | |
---|---|---|---|---|---|---|---|
juan-pineda | Juan Carlos Basto Pineda | Colombia | Bucaramanga | 37 | Universidad Industrial de Santander (UIS) | Astronomía | [Dibjujar, Caminatas] |
cristian.velandia | Cristian Velandia | Colombia | Colombia | 27 | Universidad Nacional de Colombia | Óptica | [Anime, videojuegos] |
acerot | Tatiana Acero Cuellar | Colombia | Bogotá | 23 | Universidad Nacional de Colombia | Mecánica Celeste Relativista | [Anime] |
bermudezj | Jesus David Bermudez Sanchez | Colombia | Bogotá | 25 | Universidad Nacional de Colombia | Estado Solido | [Senderismo, Ciclismo] |
grisalesj | Jennifer Grisales Casadiegos | Colombia | Bucaramanga | 27 | Universidad Industrial de Santander (UIS) | Astropartículas | [Rugby] |
navasa | Alfonso Navas | Colombia | Bogotá | 24 | Universidad Nacional de Colombia | Ecología | [Crossfit] |
Se crea una función llamada Promedio_Edad, la cuál tiene como unico argumento dic, que corresponde al dictionario, que contenga datos de Edad, del cuál se quiera obtener el promedio de edad
La función convierte el dictionario en un Dataframe de la misma manera del punto anterior, selecciona la columna con la información de edad y obtiene el promedio de dicha columna usando la función mean de pandas
def Promedio_Edad(dic):
return pd.DataFrame.from_dict(dic,orient='index').Edad.mean()
Acá se muestra un ejemplo para el diccionario Compas
Promedio_Edad(compas)
29.083333333333332
De manera analoga al punto anterior se crea una función llamada Instituciones_Conguera, la cuál, igual que el punto anterior, convierte el dictionary en un Dataframe, selecciona la columna con la información de Instituciones y obtiene los valores únicos a través de la función Unique de pandas
def Instituciones_Congueras(dic):
Instituciones = pd.DataFrame.from_dict(dic,orient='index').Institución.unique()
for a in Instituciones:
print (a)
Acá se muestra un ejemplo para el diccionario Compas
Instituciones_Congueras(compas)
Universidad Industrial de Santander (UIS) Universidad Central de Venezuela Universidad Nacional de Colombia Universidad Nacional de Ingeniería Universidad Nacional Mayor de San Marcos