PRACTICO 1#
Identificación y Recolección de Datos
El Practico 1 debe ser enviado por PEDCO de la asignatura, en la sección correspondiente. Curso EPA - PEDCO
ParteI: Datos estructurados#
Abrir un notebook nuevo y ponerle de nombre
Practico1_{mi_apellido}.ipynb.Crear un diccionario denominado
db_configde la siguiente forma:Pedir por consola el usuario, la clave y el nombre de la DB a la que desea acceder.
Utilizar los valores ingresados para crear el diccionario
Dentro de un
try-exceptconectarse a MariaDB e imprimir un mensaje positivo en caso de éxito (en eltry) y un error en caso contrario (except).Dentro de la conexión exitosa, solicitar ahora el nombre de la tabla a consultar y realizar:
Hacer una consulta simple con un seleccionar todos los atributos de la tabla ingresada
Listar la tupla 2 y 3
Probar ingresar una tabla inexistente, qué sucede?
Cierre los cursores/conexiones creadas
Vamos a probar el funcionamiento de un objeto
cursor. Crear una nueva celda que se conecte a baseSupermercado y luego:Hacer una consulta SQL que seleccione todos los empleados de Roca y Allen.
Ejecutar la consulta con el comando
cursor.execute(...)Obtener las tuplas del resultado todas juntas con
cursor.fetchall().De qué tipo es el resultado obtenido?
Recorrer el resultado y listar solo el nombre de los empleados. Se debe listar de la forma: ‘El nombre del empleado es
nombre_empleado’.Puedo seguir utilizando el cursor definido? Qué sucede si quiero volver a realizar un
cursor.fetchall()ocursor.fetchone().
Volver a ejecutar la misma consulta (
cursor.execute(...)) y recuperar todos los datos utilizandocursor.fetchone().Se debe listar de la forma: ‘El nombre del empleado es
nombre_empleadoy su ciudad esnombre_ciudad’.Ahora listar solo los primeros 3 empleados de la misma forma, pero numerada cada fila con 0, 1 y 2. Se debe usar un iterador de 1 a 3. Qué sucede si recorro solo esos 3 y quiero cerrar el cursor?
Volver a ejecutar la misma consulta pero recuperar las cuatro primeras tuplas con
cursor.fetchmany().Se debe listar de la forma: ‘El nombre del empleado es
nombre_empleadoy su domicilio esdomicilio’.
En una nueva celda poner el comando
print(dir(cursor)). Qué lista?Elegir dos de los métodos listados. Probarlos y describir su funcionamiento.
Investigar y describir el uso del parámetro
buffered=Trueen la creación de uncursor. De la formacursor = conexion.cursor(buffered=True).Investigar algún método que permita recuperar el resultado de una consulta como una lista de tipo
dictionaryy no como una lista detuplas. Probarlo y mostrar su funcionamiento.Guardar en un
dataframeel resultado de laconsultaobtenida en 8 y otro del resultado de la consulta obtenida en 4. Listar ambas.
ParteII: Dataframes y Conversion de Tipos#
Crear un
dataframellamado ventas_df que posea lo siguiente (Sugerencia, creeseriesde datos y luego uselos para crear eldataframe:
# les doy los datos para copiar y pegar
#ojo esto hay que transformarlo
numeroFactura=[1001, 1002, None, 1004, "XYZ", 1006],
fechaVenta = ["2025-07-15 10:30", "2025-07-15 11:00", None, "2025-07-17 14:45", "15-07-2025 18:00",
"2025-17-01 14:00"],
nombreProducto = ["Camiseta", None, "Zapatillas", "Gorra", "Pantalón", "Medias"],
cantidadComprada = [2, "tres", 1, 3, "ocho", "8"],
precioUnitario = [4500.0, 8500.0, "doce mil", 3000.0, None, 15000.00],
pagoCash = [True, "No", False, True, "Si", True]
Verifique y liste los tipos de datos de cada columna y del ventas_df completo. Qué puede decir de los tipos devueltos?
Transforme la columna numeroFactura a
Int64. Puede transformalo aintoint64?Transforme la columna fechaVenta a
datetime64[ns].Transforme la columna nombreProducto a
string.Transforme la columna cantidadComprada a
Int16.Transforme la columna precioUnitario a
float.Transforme la columna pagoCash a
bool. Explicar el resultado, cómo hizo la transformación? Qué sucede si lo queremos pasar al tipoboolean?Verifique y liste los tipos de datos resultantes de ventas_df.
Usando
.loc[]eiloc[]según crea más conveniente. Si es posible mostrar cada ejercicio con ambos métodos:Seleccione la columna fechaVenta.
Seleccione la segunda fila.
Seleccione las filas 3 y 4.
Seleccione los productos que se pagaron al contado.
Seleccione las facturas que vendieron más de 3 productos. Listar solo el nombreProducto y precioUnitario.
Hacer una funcion genérica, llamada
convertirDatos(columna,tipodedato)que reciba una columna de tipoSeriesy el nombre del tipo de dato a transformar (int, float, str, fechahora, bool) y la transforme al tipo de dato solicitado.Probar la función con ventas_df.
ParteIII: Datos semi-estructurados#
Acceder a la url Empleados e inspeccionar su
HTMLdesde el navegador.Guardar en una lista todas las etiquetas
divy analizar su contenido.Extraer los valores para cada una de esas columnas (atributos) y almacenarlas.
Determinar (lo puede hacer de forma manual) que el nombre y orden de las columnas es: legajo, nombre, apellido, domicilio, ciudad, sucursal e imagen (el enlace a la imagen).
Crear un nuevo dataframe que contenga las columnas y los datos. Mostrar el contenido.
ParteIV: Para los VALIENTES!#
Parte IVa): Uso de Dataframes#
Bajar el archivo girasol-serie-1969-2019.csv de aquí y bajarlo a la máquina local a una carpeta llamada archivos_datasets.
Crear un
dataframea partir del.csvlocal.Listar los nombres de las columnas.
Listar el índice creado por pandas. ¿En cuanto comienza y en cuanto termina?
Listar sólo los tipos de datos de cada columna.
¿Puede ver algo raro con la respuesta? ¿Qué son los tipos “object”?
Listar las primeras 20 filas para ver como son los datos
Listar las primeras 20 filas, pero solo de las dos últimas columnas. Debe hacerlo en forma manual, nombrando las columnas
Utilice en 4 formas diferentes el
ilocyloc.Convierta las columnas a los tipos de datos correctos.
Parte IVb): Uso de datos semiestructurados#
Acceder a la url Libros e inspeccionar su
HTMLdesde el navegador.Recuperar y listar los primeros 1000 caracteres de la url.
En base a los productos listados en las primeros 20 resultados, armar una dataframe que contenga: nombre del libro, url de la imagen asociada, el precio y si esta disponible o no.