Laboratorio #3 - Python Avanzado
Laboratorio #3 - Python Avanzado
Tópicos I
LABORATORIO N°3
Python Avanzado
Nombre:
Murillo, Issac 8-934-1563
Grupo:
VIL341
Profesor:
Javier Sánchez Galán
II Semestre, 2020
1
Tópicos Especiales I
Facultad de Ingeniería de Sistemas Computacionales
Grupo VIL-341
2do Semestre 2020
Nota: La tarea debe ser enviada de manera individual a través de la plataforma Campus Virtual en un archivo .zip.
Provea sus respuestas, ya sean comandos correctos y/o código en formato digital (formato Word) o en capturas de
pantalla cuando sea requerido. En cuanto sea posible sea claro con sus respuestas.
Observación: Identifique su código con su nombre, y correo en la parte superior del código utilizando el símbolo de
comentario #.
Problema 1. Cargar y explorar la base de datos Chinook desde PostgreSQL (10 puntos)
2. Cargue el esquema (schema) a la base de datos recién creada desde el archivo chinook_ddl.sql Haga una
captura de Pantalla donde se muestra la creación de la base de datos. Sugerencia: Puede utilizar el comando
\i de psql y el comando \d para mostrar la tabla.
2
3. Cargue los datos de las tablas que están en los archivos chinook_genres_artists_albums.sql y chinook_songs.sql
respectivamente. Sugerencia: Puede utilizar el comando \i de psql para cargar los datos.
4. Verifique que los datos fueron ingresados correctamente corriendo el comnado SELECT * From “Track”;
Haga una captura de Pantalla donde se muestre los datos ingresados en la base de datos.
Sugerencia: Recuerce que para la carga inicial del esquema y los datos puede utilizar el comando:
psql -h localhost -p 5432 -U username -d databasename -v schema=nombre_del_esquema < archivo.sql desde su terminal
3
Problema 2. Trabajando con consultas SQL desde Python (15 puntos)
Cree un script en Python llamado consultas.py, que de respuesta a las consultas que se le indican abajo. Registre sus
respuestas:
Obtenga todos los registros para las pistas con una duración de 5000000 milisegundos (83 minutos).
4
Obtenga todos los registros de las pistas con compositores nulos o vacíos.
¿Cuál es el comando para indicar cuántas pistas no tiene un compositor enumerado en la base de datos?
5
Enumere el número de clientes que piden pistas de cada país en orden descendente.
6
Problema 3. Modificando una Bas de datos PostgreSQL (15 puntos).
Usando la base de datos Chinook, escriba un script llamado modifica_chinook.py, que hace lo siguiente:
1. Use los comandos de alterar tabla para crear una nueva tabla para subgénero y llenarla con los subgéneros de
punk rock en el archivo subgenres.txt. Esta tabla debe tener un subgenreid (clave primaria), subgenrename,
subgenrealtname (en el caso de que haya otro nombre para el subgénero) y un genreid (clave foránea) de la
tabla de género.
2. Cree una nueva columna en las pistas de la tabla que permita al administrador de la base de datos especificar
un nuevo subgénero de la tabla que acaba de crear.
3. Genere 5 nuevas canciones en las Tabla Track que tienen un subgénero = “punk rock”.
7
Sugerencia: Utilice el driver Psycog2, como se mostro en clase o el driver de su preferencia. Verifique que tiene acceso
a su base de datos local.
Un restaurante en Playa Chivo tiene un gran problema, se ha quedado sin uno de los ayudantes claves para el negocio
(Juan Pérez A.), de modo que el dueño del lugar (el Sr. Harley Davidson) ha tenido que tenido que encargarse tanto de
la administración y como del servicio. Le ha pedido a la FISC que le cree una simulación del proceso que tendrá que
hacer para poder sacar su negocio adelante, sabiendo lo siguiente:
El Sr. Davidson describe su negocio como una tarea de 4 pasos: 1) recibir al/los clientes/s y tomar el/su pedido,
2) cocinar el/los platos seleccionados, 3) limpiar los platos utilizados previamente, 4) llevar los platos a la mesa
y 5) cobrar al/los clientes y despedirse.
o El paso #1 se debe ejecutar de primero, así mismo el paso #5 se debe ejecutar de ultimo. Los pasos #2,
#3 y #4 pueden realizarse en cuando exista la oportunidad.
El menú consta de 10 elementos, comidas a $3 (ceviche, flan, arroz, sancocho) y bebidas a $1 (agua, soda,
cervezas nacionales) y cervezas importadas y tragos a $3.
Escriba un script llamado restauranteplayachivo.py que ayude a realizar la simulación de como podrá manejar el
negocio, utilizando el modulo time, threading y random.
Sugerencias:
Defina funciones para generar cada una de las tareas.
Use el modulo random.randomint para la simulación del pedido, de modo que tanto el numero de platos
pedidos (1-3) y como los elementos (1-10) sean al azar.
o También, se debe simular los platos sucios (o por limpiar), que generalmente varia entre (1-5). No se
requiere verificar si existen platos sucios antes de servir la comida, pero generalmente se quiere tener
los platos limpios para poder servir mas rápidamente.
Utilice la función threading.Thread(<nombre de función>, <args, > ) para llamar a los hilos. .start() para
iniciarlos y .join() para concluirlos.
Utilice time.sleep(<segundos>) para simular la duración de tiempo que toma realizar los procesos
En el paso #5 debe presentar al usuario el monto total a pagar, calculado con las opciones seleccionadas del
menú.
8
9
Parte III. Manejo de cálculos numéricos con Numpy y visualización con Matplotlib
Problema 5. Matplotlib (20 puntos). Utilizando el archivo covid_panama.csv escriba un script llamado
analiza_covid.py que realice las siguientes operaciones:
lea el archivo
1
0
grafique utilizando Matplotlib tanto la tendencia de nuevos casos, como la tendencia de casos totales.
Sugerencia: en una ventana con 2 subventanas (con subplot).
Nuevos casos:
Casos totales:
1
1
Grafique las dos series indicadas arriba, pero en escala logarítmica. Sugerencia: usar pyplot.yscale
https://matplotlib.org/3.3.2/api/_as_gen/matplotlib.pyplot.yscale.html
Nuevos casos
1
2
Casos totales:
Haga un histograma de los nuevos casos, para ver cuál es la tendencia diaria.
1
3
Utilizando la columna Id y de casos totales realice haga un análisis de ajuste de la curva para saber como se
comportan los casos, par a ello utilice varios ordenes lineal (1), cuadrático (2), orden-3 (3). Sugerencia: usar la
función anumpy.polynomial.polynomial o la function polyfit para ajustar los ordenes.
Cree una serie nueva utilizando la función polyval, para ajustar los valores de Id sobre los nuevos pesos
ajustados y grafíquelos sobre la serie original de casos totales.
Responder a la pregunta ¿a cuál orden (1, 2 o 3) o que función modela mejor los datos de casos totales?.
Problema 6. Numpy y Matplotlib (20 puntos). El Cuarteto de Anscombe comprende cuatro conjuntos de datos que
tienen propiedades estadísticas casi idénticas, sin embargo, aparecen muy diferente al graficarse. Basada en el
Cuarteto investigadores se han propuesto diseñar conjuntos de datos similares, uno de estos esfuerzos es el
Datasaurus, o mejor conocido como el Datasaurus Dozen.
Escriba un script llamado datasaurus.py, que para cada uno de los 13 conjuntos de datos es capaz de:
Leer los datos desde el archivo DatasaurusDozen.csv, realice las transformaciones necesarias. Su script debe
proporcionar dos figuras (dos ventanas) con la información apropiada (leyendas, ejes, etc).
En la primera ventana grafique solamente los valores que dicen en la columna ‘dino’. En la segunda figura y
organizadas en un diseño de cuadrícula de 3 X 4 las otras 12.
Para cada una de las 12 + 1 graficas, calcular el:
o promedio de los vectores X e Y en cada caso
o la varianza de la muestra de los vectores X e Y vectores en cada caso
o la correlación entre X e Y en cada caso (formateo con 3 decimales).
1
4
1
5
1
6