0% encontró este documento útil (0 votos)
140 vistas16 páginas

Laboratorio #3 - Python Avanzado

1) El documento describe un laboratorio sobre Python avanzado para una clase de Ingeniería de Sistemas y Computación en la Universidad Tecnológica de Panamá. 2) El laboratorio incluye tres partes: manejo de bases de datos con PostgreSQL, hilos de ejecución múltiples, y cálculos numéricos con Numpy y visualización con Matplotlib. 3) Se pide a los estudiantes completar una serie de problemas relacionados a estos temas usando Python.

Cargado por

Israel Murillo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
140 vistas16 páginas

Laboratorio #3 - Python Avanzado

1) El documento describe un laboratorio sobre Python avanzado para una clase de Ingeniería de Sistemas y Computación en la Universidad Tecnológica de Panamá. 2) El laboratorio incluye tres partes: manejo de bases de datos con PostgreSQL, hilos de ejecución múltiples, y cálculos numéricos con Numpy y visualización con Matplotlib. 3) Se pide a los estudiantes completar una serie de problemas relacionados a estos temas usando Python.

Cargado por

Israel Murillo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 16

Universidad Tecnológica De Panamá

Facultad de Ingeniería de Sistemas Computacionales


Departamento de Computación y Simulación de
Sistemas
Licenciatura en Ingeniería de Sistemas y Computación

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

Laboratorio #3 – Base de datos con Python y Python Numérico (100 puntos)

Asignada: 5 de octubre de 2020


Fecha de Entrega: 20 de octubre de 2020 (11:59pm)

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 #.

Parte I. Base de datos PostgreSQL

Uno de los modelos de base de datos más utilizados para


la enseñanza de estructuras es el modelo de datos
Chinook. Representa una tienda de medios digitales, que
incluye tablas para artistas, álbumes, pistas de medios,
facturas y clientes. Fue hecho usando datos reales de una
biblioteca de iTunes.

La información del cliente y del empleado se creó


manualmente utilizando nombres ficticios, direcciones
que pueden ubicarse en Google Maps y otros datos bien
formateados (teléfono, fax, correo electrónico, etc.). La
información de ventas se genera automáticamente
usando datos aleatorios por un período de cuatro años.

En la figura a la derecha se muestra la estructura de la


base de datos:

Problema 1. Cargar y explorar la base de datos Chinook desde PostgreSQL (10 puntos)

1. Cree la base datos Chinook dentro de su estructura de base de datos.

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).

 Obtener el número promedio de bytes de las pistas

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?

 Enumerar el número de clientes que piden pistas de cada país

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.

CREATE TABLE "Subgenero" (


"Subgenreid" INT NOT NULL, "Subgenrename" VARCHAR(200)
NOT NULL, "Subgenrealtname" VARCHAR(30),
"GenreId" INT NOT NULL,
CONSTRAINT "PK_Subgenreid" PRIMARY KEY ("Subgenreid")
);

ALTER TABLE "Subgenero" ADD CONSTRAINT "FK_GenreId"


FOREIGN KEY ("GenreId") REFERENCES "Genre" ("GenreId") ON DELETE NO ACTION ON UPDATE NO
ACTION;

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.

Parte II. Hilos de Ejecución Múltiples

Problema 4. Manejo de Hilos con Threading (20 puntos).

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.

Estos 13 conjuntos de datos (el Datasaurus, más


12 otros) tienen las mismas características
estadísticas (media, desviación estándar y
correlación de Pearson) a dos decimales, mientras
que son drásticamente diferentes en apariencia.
Lo que nos enseña a siempre verificar las salidas
de nuestras graficas, especialmente si las
estadísticas calculadas son similares.

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).

Sugerencia: utilice np.std(), np.mean() y np.corr().

1
4
1
5
1
6

También podría gustarte