Menu iconMenu icon
Python y SQL Biblia

Capítulo 18: Análisis de Datos con Python y SQL

18.6 Ejercicios Prácticos

Ejercicio 1: Limpieza de Datos

Tienes una tabla en tu base de datos SQLite llamada employee_data con las columnas idnameageemaildepartment, y salary. Desafortunadamente, algunas filas contienen valores faltantes (None en Python, NULL en SQL), y algunas entradas de email no están en el formato adecuado (deberían ser algo@dominio.com).

Escribe un script de Python utilizando el módulo sqlite3 para:

  1. Eliminar todas las filas con alguna columna que tenga None/NULL.
  2. Validar las entradas de email y eliminar las filas con un formato de email inválido.
import sqlite3
import re

# Connect to the database
conn = sqlite3.connect('my_database.db')

# Create a cursor object
c = conn.cursor()

# Remove rows with any NULL value
c.execute("DELETE FROM employee_data WHERE id IS NULL OR name IS NULL OR age IS NULL OR email IS NULL OR department IS NULL OR salary IS NULL")

# Validate email format and remove rows with invalid emails
c.execute("SELECT * FROM employee_data")
rows = c.fetchall()
for row in rows:
    if not re.match(r"[^@]+@[^@]+\.[^@]+", row[3]):
        c.execute("DELETE FROM employee_data WHERE id=?", (row[0],))

# Commit the changes and close the connection
conn.commit()
conn.close()

Ejercicio 2: Transformación de Datos

Suponiendo que tienes una tabla en tu base de datos SQLite llamada sales con las columnas idregiontotal_sales, y date:

  1. Escribe una consulta SQL para agregar una nueva columna profit, que sea el 10% de total_sales.
  2. Escribe un script de Python usando sqlite3 para implementar la consulta SQL.
import sqlite3

conn = sqlite3.connect('my_database.db')
c = conn.cursor()

# Add a new column 'profit'
c.execute("ALTER TABLE sales ADD COLUMN profit REAL")

# Update 'profit' as 10% of 'total_sales'
c.execute("UPDATE sales SET profit = total_sales * 0.1")

conn.commit()
conn.close()

Ejercicio 3: Consulta a la Base de Datos SQL desde Python

Usando la tabla sales en tu base de datos SQLite:

  1. Escribe un script de Python usando el módulo sqlite3 para recuperar todas las filas donde region sea 'West', e imprimir cada fila.
  2. Calcula el promedio de total_sales para la región 'West' en Python.
import sqlite3

conn = sqlite3.connect('my_database.db')
c = conn.cursor()

# Fetch and print rows where 'region' is 'West'
c.execute("SELECT * FROM sales WHERE region = 'West'")
rows = c.fetchall()
for row in rows:
    print(row)

# Calculate the average 'total_sales' for the 'West' region
c.execute("SELECT AVG(total_sales) FROM sales WHERE region = 'West'")
average_sales = c.fetchone()[0]
print(f'Average sales in the West region: {average_sales}')

conn.close()

18.6 Ejercicios Prácticos

Ejercicio 1: Limpieza de Datos

Tienes una tabla en tu base de datos SQLite llamada employee_data con las columnas idnameageemaildepartment, y salary. Desafortunadamente, algunas filas contienen valores faltantes (None en Python, NULL en SQL), y algunas entradas de email no están en el formato adecuado (deberían ser algo@dominio.com).

Escribe un script de Python utilizando el módulo sqlite3 para:

  1. Eliminar todas las filas con alguna columna que tenga None/NULL.
  2. Validar las entradas de email y eliminar las filas con un formato de email inválido.
import sqlite3
import re

# Connect to the database
conn = sqlite3.connect('my_database.db')

# Create a cursor object
c = conn.cursor()

# Remove rows with any NULL value
c.execute("DELETE FROM employee_data WHERE id IS NULL OR name IS NULL OR age IS NULL OR email IS NULL OR department IS NULL OR salary IS NULL")

# Validate email format and remove rows with invalid emails
c.execute("SELECT * FROM employee_data")
rows = c.fetchall()
for row in rows:
    if not re.match(r"[^@]+@[^@]+\.[^@]+", row[3]):
        c.execute("DELETE FROM employee_data WHERE id=?", (row[0],))

# Commit the changes and close the connection
conn.commit()
conn.close()

Ejercicio 2: Transformación de Datos

Suponiendo que tienes una tabla en tu base de datos SQLite llamada sales con las columnas idregiontotal_sales, y date:

  1. Escribe una consulta SQL para agregar una nueva columna profit, que sea el 10% de total_sales.
  2. Escribe un script de Python usando sqlite3 para implementar la consulta SQL.
import sqlite3

conn = sqlite3.connect('my_database.db')
c = conn.cursor()

# Add a new column 'profit'
c.execute("ALTER TABLE sales ADD COLUMN profit REAL")

# Update 'profit' as 10% of 'total_sales'
c.execute("UPDATE sales SET profit = total_sales * 0.1")

conn.commit()
conn.close()

Ejercicio 3: Consulta a la Base de Datos SQL desde Python

Usando la tabla sales en tu base de datos SQLite:

  1. Escribe un script de Python usando el módulo sqlite3 para recuperar todas las filas donde region sea 'West', e imprimir cada fila.
  2. Calcula el promedio de total_sales para la región 'West' en Python.
import sqlite3

conn = sqlite3.connect('my_database.db')
c = conn.cursor()

# Fetch and print rows where 'region' is 'West'
c.execute("SELECT * FROM sales WHERE region = 'West'")
rows = c.fetchall()
for row in rows:
    print(row)

# Calculate the average 'total_sales' for the 'West' region
c.execute("SELECT AVG(total_sales) FROM sales WHERE region = 'West'")
average_sales = c.fetchone()[0]
print(f'Average sales in the West region: {average_sales}')

conn.close()

18.6 Ejercicios Prácticos

Ejercicio 1: Limpieza de Datos

Tienes una tabla en tu base de datos SQLite llamada employee_data con las columnas idnameageemaildepartment, y salary. Desafortunadamente, algunas filas contienen valores faltantes (None en Python, NULL en SQL), y algunas entradas de email no están en el formato adecuado (deberían ser algo@dominio.com).

Escribe un script de Python utilizando el módulo sqlite3 para:

  1. Eliminar todas las filas con alguna columna que tenga None/NULL.
  2. Validar las entradas de email y eliminar las filas con un formato de email inválido.
import sqlite3
import re

# Connect to the database
conn = sqlite3.connect('my_database.db')

# Create a cursor object
c = conn.cursor()

# Remove rows with any NULL value
c.execute("DELETE FROM employee_data WHERE id IS NULL OR name IS NULL OR age IS NULL OR email IS NULL OR department IS NULL OR salary IS NULL")

# Validate email format and remove rows with invalid emails
c.execute("SELECT * FROM employee_data")
rows = c.fetchall()
for row in rows:
    if not re.match(r"[^@]+@[^@]+\.[^@]+", row[3]):
        c.execute("DELETE FROM employee_data WHERE id=?", (row[0],))

# Commit the changes and close the connection
conn.commit()
conn.close()

Ejercicio 2: Transformación de Datos

Suponiendo que tienes una tabla en tu base de datos SQLite llamada sales con las columnas idregiontotal_sales, y date:

  1. Escribe una consulta SQL para agregar una nueva columna profit, que sea el 10% de total_sales.
  2. Escribe un script de Python usando sqlite3 para implementar la consulta SQL.
import sqlite3

conn = sqlite3.connect('my_database.db')
c = conn.cursor()

# Add a new column 'profit'
c.execute("ALTER TABLE sales ADD COLUMN profit REAL")

# Update 'profit' as 10% of 'total_sales'
c.execute("UPDATE sales SET profit = total_sales * 0.1")

conn.commit()
conn.close()

Ejercicio 3: Consulta a la Base de Datos SQL desde Python

Usando la tabla sales en tu base de datos SQLite:

  1. Escribe un script de Python usando el módulo sqlite3 para recuperar todas las filas donde region sea 'West', e imprimir cada fila.
  2. Calcula el promedio de total_sales para la región 'West' en Python.
import sqlite3

conn = sqlite3.connect('my_database.db')
c = conn.cursor()

# Fetch and print rows where 'region' is 'West'
c.execute("SELECT * FROM sales WHERE region = 'West'")
rows = c.fetchall()
for row in rows:
    print(row)

# Calculate the average 'total_sales' for the 'West' region
c.execute("SELECT AVG(total_sales) FROM sales WHERE region = 'West'")
average_sales = c.fetchone()[0]
print(f'Average sales in the West region: {average_sales}')

conn.close()

18.6 Ejercicios Prácticos

Ejercicio 1: Limpieza de Datos

Tienes una tabla en tu base de datos SQLite llamada employee_data con las columnas idnameageemaildepartment, y salary. Desafortunadamente, algunas filas contienen valores faltantes (None en Python, NULL en SQL), y algunas entradas de email no están en el formato adecuado (deberían ser algo@dominio.com).

Escribe un script de Python utilizando el módulo sqlite3 para:

  1. Eliminar todas las filas con alguna columna que tenga None/NULL.
  2. Validar las entradas de email y eliminar las filas con un formato de email inválido.
import sqlite3
import re

# Connect to the database
conn = sqlite3.connect('my_database.db')

# Create a cursor object
c = conn.cursor()

# Remove rows with any NULL value
c.execute("DELETE FROM employee_data WHERE id IS NULL OR name IS NULL OR age IS NULL OR email IS NULL OR department IS NULL OR salary IS NULL")

# Validate email format and remove rows with invalid emails
c.execute("SELECT * FROM employee_data")
rows = c.fetchall()
for row in rows:
    if not re.match(r"[^@]+@[^@]+\.[^@]+", row[3]):
        c.execute("DELETE FROM employee_data WHERE id=?", (row[0],))

# Commit the changes and close the connection
conn.commit()
conn.close()

Ejercicio 2: Transformación de Datos

Suponiendo que tienes una tabla en tu base de datos SQLite llamada sales con las columnas idregiontotal_sales, y date:

  1. Escribe una consulta SQL para agregar una nueva columna profit, que sea el 10% de total_sales.
  2. Escribe un script de Python usando sqlite3 para implementar la consulta SQL.
import sqlite3

conn = sqlite3.connect('my_database.db')
c = conn.cursor()

# Add a new column 'profit'
c.execute("ALTER TABLE sales ADD COLUMN profit REAL")

# Update 'profit' as 10% of 'total_sales'
c.execute("UPDATE sales SET profit = total_sales * 0.1")

conn.commit()
conn.close()

Ejercicio 3: Consulta a la Base de Datos SQL desde Python

Usando la tabla sales en tu base de datos SQLite:

  1. Escribe un script de Python usando el módulo sqlite3 para recuperar todas las filas donde region sea 'West', e imprimir cada fila.
  2. Calcula el promedio de total_sales para la región 'West' en Python.
import sqlite3

conn = sqlite3.connect('my_database.db')
c = conn.cursor()

# Fetch and print rows where 'region' is 'West'
c.execute("SELECT * FROM sales WHERE region = 'West'")
rows = c.fetchall()
for row in rows:
    print(row)

# Calculate the average 'total_sales' for the 'West' region
c.execute("SELECT AVG(total_sales) FROM sales WHERE region = 'West'")
average_sales = c.fetchone()[0]
print(f'Average sales in the West region: {average_sales}')

conn.close()