0010 - SEM6 - Actividad
0010 - SEM6 - Actividad
0010 - SEM6 - Actividad
Instrucciones
1. Antes de comenzar, debes haber revisado las siguientes clases y las lecturas hasta
la semana 6.
2. Lee con atención el enunciado de la tarea que se adjunta a continuación
3. Debes entregar un archivo .ipynb con tus respuestas. Se adjunta un formulario de
respuestas para que uses como template. Descargalo y desarrolla allí tu tarea.
4. Instrucciones:
o Haz clic en el botón para agregar entrega. Se abrirá una nueva ventana que
permite arrastrar el archivo y subirlo.
o Comprueba que el archivo arrastrado es el correcto y presiona el botón
para guardar cambios. El documento quedará guardado en la plataforma.
1
Enunciado
Introducción
En esta tarea continuaremos desarrollando nuestro caso de uso visto en las tareas
anteriores. En particular, ahora que ya tenemos nuestra base de datos armada y analizada
por sí misma, haremos un análisis de los datos cruzando datos que ya tenemos en
nuestra base de datos, con unos datos coleccionados desde las Naciones Unidas para ves
si podemos sacar algunas conclusiones sobre la participación en varios talleres en base
indicadores del país dónde se estos organizan.
Persona(rut,nombre,correo,teléfono)
TallerDeportivo(id,nombreTaller, nombreProfesor,
fecha,hora,valor,duración,deporte,nrEquipos, nrPersonas)
TallerInstrumental(id,nombreTaller, nombreProfesor,
fecha,hora,valor,duración,instrumento,nrInstrumentos)
Lugar(id,calle,número,código,nombreCiudad,nombrePaís)
Participa(rut,idTaller)
EstáEn(idTaller,idLugar)
Si necesitas acordarte del significado de cada una de estas tablas, debes consultar la
descripción en Tarea 2.
Esta vez, adicionalmente contamos con un archivo .csv que contiene información sobre
los indicadores de cada país. Los datos que se vinculan a un país en este archivo son: su
nombre, población, pib (GDP), etc. Este archivo proviene de la información publicada por la
ONU, y se puede encontrar, bajo la licencia CC0, en Kaggle:
https://www.kaggle.com/datasets/sudalairajkumar/undata-country-profiles El archivo lo
2
dejaremos disponible para descargar en un Google Drive interno igual cómo a la base de
datos. Los datos en este archivo los explicaremos más adelante.
Idea de esta tarea es hacer un análisis del mercado, y ver si los indicadores de un país nos
dicen algo sobre la participación en los talleres que se organizan en este país. En nuestro
caso, nos concentraremos en los países en América Central y el Caribe.
Junto con esta tarea, te pasaremos un Jupyter notebook que descargará, de manera
automática, la base de datos que ocuparemos, y el archivo .cvs que necesitamos.
Adicionalmente, te pasaremos el archivo .csv por separado, por si queres analizar los
datos por tu propia cuenta.
Pregunta 1
Pregunta 2
En esta pregunta debes conseguir la información de cual persona participa en cual taller, y
en cual país se organiza este taller. Quiere decir, que, en base de nuestra base de datos,
debes armar un cursor que ejecuta la consulta recuperando esta información (ver el
notebook para más hints). En particular, te pedimos armar una consulta SQL que recupera,
desde nuestra base de datos, la información de:
3
- Rut de persona
- Id del taller
- Y país de taller
Pregunta 3
En la clase presencial explicaremos cómo hacer joins con Pandas. Para ayudarte, igual
incluimos una pequeña descripción al final de este enunciado (después de la última
pregunta). Adicionalmente, puedes buscar “cómo hacer joins con Pandas” en Google para
ver varios tutoriales sobre el tema. Si prefieres, puedes ocupar los comandos de Python
para esto igual (dado que Jupyter Notebook corre Python).
Pregunta 4
En esta pregunta te pedimos armar un gráfico de barras (bar chart) de los datos obtenidos
en la Pregunta 3. Quiere decir, tu gráfico debe tener en un eje el nombre del país, y en el
otro, el número de inscripciones a talleres ene este país. De nuevo, esto es solo para los
4
países de Centro América y del Caribe, y no es necesario graficar los países dónde no se
organiza ningún taller.
Pregunta 5
Ahora queremos ver si hay alguna conexión entre indicadores de un país con la cantidad
de inscripciones a talleres que se organizan en este país. Para esto, debes conseguir,
desde nuestro archivo .csv, o uno de los dataframes que armaste antes, la población del
país (en el archivo .csv esta columna se llama “Population in thousands (2017)”), y ver,
para cada país de Centro América y del Caribe, si la población más grande significa más
inscripciones. ¿Qué puedes concluir aquí? ¿Hay alguna conexión? Con tu respuesta,
también debes entregar el código qué genera esta información (de nuevo, para países de
Centro América y Caribe dónde hay talleres).
Pregunta 6
Aquí debes hacer el mismo ejercicio de la Pregunta 5, pero ahora ver si hay alguna
conexión entre el ÏB del áís y el número de inscripciones. Para esto te sirve la columna
“GDP per capita (current US$)” del archivo .csv. ¿Qué puedes concluir aquí? ¿Hay alguna
conexión? Con tu respuesta, también debes entregar el código qué genera esta
información (de nuevo, para países de Centro América y Caribe dónde hay talleres).
Cuando tenemos dos dataframes de Pandas, los podemos pensar cómo dos tablas en el
modelo relacional. Por lo tanto, muchas veces nos gustaría hacer el join entre estas dos
tablas. Pandas tiene varios métodos que nos permiten hacer esto. Nosotros nos
enfocaremos en el método merge.
Import pandas as pd
5
df1 = pd.DataFrame({'A': ['b', 'b', 'a'],
'B': [ 2 , 7 , 4 ]})
'D': [ 6 , 7 , 2 , 4 ]})
Pensando en df1 cómo la tabla con el esquema df1(A,B) y df2 cómo la tabla con el
esquema df2(C,D), el comando merge de arriba realiza el join de df1 con el df2, con la
condición que los valores de los atributos B y D sean iguales. En nuestro ejemplo, esto
corresponde a una consulta SQL del estilo
SELECT *
Aquí el parámetro ‘left_on’ dice cual atributo de la primera relación (df1 n nuestro caso) se
ocupará para comparar con ‘right_on’ de df2 (la segunda relación). En nuestro ejemplo, el
resultado de este merge/join será el siguiente dataframe:
A B C D
0 b 2 d 2
1 b 7 b 7
2 a 4 a 4
6
El método merge permite muchas funcionalidades y formas de hacer joins. Por ejemplo, si
los dataframes tienen atributos con el mismo nombre, el join se hace sobre estos
atributos. Para más información, puedes consultar:
- https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.merge.html
- https://github.com/IIC2413/Syllabus-2020-
2/blob/master/Notebooks/DataScience/DataFrames_Pandas.ipynb
Aspectos formales
Considera los aspectos formales que se describen a continuación:
¡Mucho éxito!