No hemos visto pandas, pero soy re fan de la librería
import numpy as np
import pandas as pd
Siglas de las universidades
universidades = {'UNAL': 'Universidad Nacional de Colombia',
'UCV': 'Universidad Central de Venezuela',
'UNMSM': 'Universidad Nacional Mayor de San Marcos',
'LAPP': 'Laboratoire d’Annecy de Physique des Particules',
'univ-tlse3': 'Université Paul Sabatier',
'UIS': 'Universidad Industrial de Santander',
'UV':'Universidad del Valle',
'UNI':'Universidad Nacional de Ingeniería'}
compas = {'acerot':
{'nombre': 'Tatiana',
'apellido': 'Acero Cuellar',
'residencia': 'Colombia',
'edad': '23',
'institución': 'UNAL',
'especialidad':'Mecánica Celeste Relativista',
'hobbie':'Anime'},
'andreatugores':
{'nombre': 'Andrea Carolina',
'apellido': 'Tugores Hernández',
'residencia': 'Venezuela',
'edad': '24',
'institución': 'UCV',
'especialidad':'Física médica',
'hobbie':'Tenis'},
'navasa':
{'nombre': 'Alfonso',
'apellido': 'Navas',
'residencia': 'Colombia',
'edad': '24',
'institución': 'UNAL',
'especialidad':'Física de sistemas complejos, Ecología',
'hobbie':'Crossfit'},
'fernandezn':
{'nombre': 'Nicolás',
'apellido': 'Fernández Cinquepalmi',
'residencia': 'Perú',
'edad': '27',
'institución': 'UNMSM',
'especialidad':'Física nuclear',
'hobbie':'Música'},
'arturos':
{'nombre': 'Arturo',
'apellido': 'Sanchez',
'residencia': 'Suiza',
'edad': '34',
'institución': 'LAPP',
'especialidad':'Física y Computación',
'hobbie':'Bicicleta'},
'pierre_r_pujol':
{'nombre': 'Pierre',
'apellido': 'Pujol',
'residencia': 'Francia',
'edad': '52',
'institución': 'univ-tlse3',
'especialidad':'Física teórica',
'hobbie':'Fotografía'},
'britod':
{'nombre': 'Daniel Arturo',
'apellido': ' Brito Urbina',
'residencia': 'Venezuela',
'edad': '26',
'institución': 'UCV',
'especialidad':'Teorías de Campos',
'hobbie':'Patinetas, Bicicletas, Videojuegos'},
'hernandezj':
{'nombre': 'Juan David',
'apellido': ' Hernández',
'residencia': 'Colombia',
'edad': '24',
'institución': 'UNAL',
'especialidad':'Electrodinámica cuántica',
'hobbie':'Leer, Videojuegos'},
'ordonezs':
{'nombre': 'Sebastian',
'apellido': ' Ordoñez',
'residencia': 'Colombia',
'edad': '22',
'institución': 'UNAL',
'especialidad':'Física de partículas experimentales',
'hobbie':'Leer, hiking'},
'grisalesj':
{'nombre': 'Jennifer',
'apellido': 'Grisales Casadiegos',
'residencia': 'Colombia',
'edad': '27',
'institución': 'UIS',
'especialidad':'Astropartículas, Divulgación científica',
'hobbie':'Comunicar Ciencia, Deporte'},
'ladinoj':
{'nombre': 'Jose Miguel',
'apellido': 'Ladino Méndez',
'residencia': 'Colombia',
'edad': '24',
'institución': 'UNAL',
'especialidad':'Mecánica Celeste Relativista',
'hobbie':'Skate'},
'reyesf':
{'nombre': 'Felipe',
'apellido': 'Reyes Osorio',
'residencia': 'Colombia',
'edad': '22',
'institución': 'UV',
'especialidad':'Materia condensada',
'hobbie':'Gimansio'},
'riveraa':
{'nombre': 'Ariel',
'apellido': 'Rivera',
'residencia': 'Perú',
'edad': '33',
'institución': 'UNI',
'especialidad':'Física núclear',
'hobbie':'Geopolítica, programación'},
'malamboj':
{'nombre': 'Jorge Enrique',
'apellido': 'Malambo Martinez',
'residencia': 'Colombia',
'edad': '39',
'institución': 'UNAL',
'especialidad': 'Física',
'hobbie':'Talla en madera'},
'cristian.velandia':
{'nombre': 'Cristian',
'apellido': 'Velandia',
'residencia': 'Colombia',
'edad': '27',
'institución': 'UNAL',
'especialidad':'Optica',
'hobbie':'Anime, videojuegos'}}
len(compas)
15
Función que recibe un diccionario y un país y retorna un Dataframe de las personas que residen en ese pais. Las columnas son las características/información de la persona.
def amigos_congueros(dicci, pais):
'''
Función que recibe un diccionario y un país y retorna un Dataframe de las personas que
residen en ese pais. Las columnas son las características/información de la persona.
'''
# -- inicializar una lista vacia para guardar los datos finales
ha = []
# -- iterar sobre el diccionario
for i in dicci:
# -- usar minúsculas, toca tener cuidado con acentos
if dicci[i]['residencia'].lower() == pais.lower():
# -- gudardar en la lista la informacion de la persona que esta en el pais
ha.append(dicci[i])
# -- si la lista no tiene elementos, no hay compas en ese pais
if len(ha) == 0:
print('No hay compañeros de ese país')
# -- convertir la lista en un dataframe, para que vea ordenado
return pd.DataFrame(ha)
# -- compas en venezuela
ej1 = amigos_congueros(compas, 'venezuela')
ej1
nombre | apellido | residencia | edad | institución | especialidad | hobbie | |
---|---|---|---|---|---|---|---|
0 | Andrea Carolina | Tugores Hernández | Venezuela | 24 | UCV | Física médica | Tenis |
1 | Daniel Arturo | Brito Urbina | Venezuela | 26 | UCV | Teorías de Campos | Patinetas, Bicicletas, Videojuegos |
# -- compas en colombia
ej2 = amigos_congueros(compas, 'colombia')
ej2
nombre | apellido | residencia | edad | institución | especialidad | hobbie | |
---|---|---|---|---|---|---|---|
0 | Tatiana | Acero Cuellar | Colombia | 23 | UNAL | Mecánica Celeste Relativista | Anime |
1 | Alfonso | Navas | Colombia | 24 | UNAL | Física de sistemas complejos, Ecología | Crossfit |
2 | Juan David | Hernández | Colombia | 24 | UNAL | Electrodinámica cuántica | Leer, Videojuegos |
3 | Sebastian | Ordoñez | Colombia | 22 | UNAL | Física de partículas experimentales | Leer, hiking |
4 | Jennifer | Grisales Casadiegos | Colombia | 27 | UIS | Astropartículas, Divulgación científica | Comunicar Ciencia, Deporte |
5 | Jose Miguel | Ladino Méndez | Colombia | 24 | UNAL | Mecánica Celeste Relativista | Skate |
6 | Felipe | Reyes Osorio | Colombia | 22 | UV | Materia condensada | Gimansio |
7 | Jorge Enrique | Malambo Martinez | Colombia | 39 | UNAL | Física | Talla en madera |
8 | Cristian | Velandia | Colombia | 27 | UNAL | Optica | Anime, videojuegos |
# -- compas en perú
ej3 = amigos_congueros(compas, 'perú')
ej3
nombre | apellido | residencia | edad | institución | especialidad | hobbie | |
---|---|---|---|---|---|---|---|
0 | Nicolás | Fernández Cinquepalmi | Perú | 27 | UNMSM | Física nuclear | Música |
1 | Ariel | Rivera | Perú | 33 | UNI | Física núclear | Geopolítica, programación |
# -- compas (el profe) en suiza
ej4 = amigos_congueros(compas, 'suiza')
ej4
nombre | apellido | residencia | edad | institución | especialidad | hobbie | |
---|---|---|---|---|---|---|---|
0 | Arturo | Sanchez | Suiza | 34 | LAPP | Física y Computación | Bicicleta |
# -- compas (el profe) en francia
ej4 = amigos_congueros(compas, 'francia')
ej4
nombre | apellido | residencia | edad | institución | especialidad | hobbie | |
---|---|---|---|---|---|---|---|
0 | Pierre | Pujol | Francia | 52 | univ-tlse3 | Física teórica | Fotografía |
Se podria hacer mas sencillo desde el dataframe
# -- inicializar la suma en cero
suma = 0
# -- inicializar una lista vacia
insti = []
# -- tomar cada diccionario y extraer el valor de la edad, sumar y promediar por la cantidad de compas
for i in compas:
suma = suma + int(compas[i]['edad'])
# -- guardar cada insitución en la lista
insti.append(compas[i]['institución'])
promedio = suma / len(compas)
print('El promedio de las edades de los compas es: {}'.format(promedio))
print('El promedio de las edades de los compas es: {}'.format(round(promedio)))
El promedio de las edades de los compas es: 28.533333333333335 El promedio de las edades de los compas es: 29
# -- para determinar las instituciones sin repetir, convertirmos la lista en un conjunto
siglas = set(insti)
siglas
{'LAPP', 'UCV', 'UIS', 'UNAL', 'UNI', 'UNMSM', 'UV', 'univ-tlse3'}
# -- buscamos el nombre completo de acuerdo a la sigla
insituciones = [universidades[i] for i in siglas]
print('Las insituciones en las que estan vinculados los compas son: \n {}'.format(insituciones))
Las insituciones en las que estan vinculados los compas son: ['Universidad Nacional de Colombia', 'Universidad Nacional Mayor de San Marcos', 'Universidad Nacional de Ingeniería', 'Université Paul Sabatier', 'Universidad del Valle', 'Laboratoire d’Annecy de Physique des Particules', 'Universidad Central de Venezuela', 'Universidad Industrial de Santander']