Aplicaciones del mundo real
Ahora que ha aprendido diferentes técnicas para encontrar los N elementos superiores en una lista de Python, exploremos algunas aplicaciones del mundo real. En este paso, creará un script más completo que aplica estos conceptos a escenarios prácticos.
Cree un nuevo archivo llamado practical_applications.py en el directorio del proyecto y agregue el siguiente código:
## Aplicaciones del mundo real para encontrar los N elementos superiores
import heapq
from datetime import datetime
print("APLICACIONES PRÁCTICAS PARA ENCONTRAR LOS N ELEMENTOS SUPERIORES EN LISTAS DE PYTHON\n")
## Aplicación 1: Comercio electrónico - Análisis de ventas de productos
print("APLICACIÓN 1: COMERCIO ELECTRÓNICO - ANÁLISIS DE VENTAS DE PRODUCTOS")
print("==================================================")
## Datos de muestra de ventas de productos (product_id, product_name, units_sold, price)
product_sales = [
(101, "Smartphone X", 1250, 899.99),
(102, "Wireless Earbuds", 2100, 129.99),
(103, "Laptop Pro", 890, 1299.99),
(104, "Smart Watch", 1450, 249.99),
(105, "Tablet Mini", 1050, 399.99),
(106, "Bluetooth Speaker", 1750, 79.99),
(107, "Gaming Console", 780, 499.99),
(108, "Digital Camera", 550, 349.99),
(109, "Power Bank", 1900, 49.99),
(110, "Fitness Tracker", 1350, 129.99)
]
## Encuentra los 3 productos principales por unidades vendidas
top_sold_products = heapq.nlargest(3, product_sales, key=lambda x: x[2])
print("\nLos 3 productos más vendidos (por unidades vendidas):")
for product in top_sold_products:
print(f" {product[1]}: {product[2]} unidades vendidas a ${product[3]}")
## Encuentra los 3 productos principales por ingresos (unidades_vendidas * precio)
top_revenue_products = heapq.nlargest(3, product_sales, key=lambda x: x[2] * x[3])
print("\nLos 3 productos principales por ingresos:")
for product in top_revenue_products:
revenue = product[2] * product[3]
print(f" {product[1]}: ${revenue:,.2f} de ingresos ({product[2]} unidades a ${product[3]})")
## Aplicación 2: Análisis de datos - Monitoreo de temperatura
print("\n\nAPLICACIÓN 2: ANÁLISIS DE DATOS - MONITOREO DE TEMPERATURA")
print("====================================================")
## Datos de muestra de temperatura (fecha, ciudad, temperatura)
temperature_data = [
("2023-06-15", "New York", 32.5),
("2023-06-15", "Los Angeles", 28.3),
("2023-06-15", "Chicago", 30.1),
("2023-06-15", "Houston", 35.7),
("2023-06-15", "Phoenix", 40.2),
("2023-06-15", "Miami", 33.8),
("2023-06-15", "Denver", 29.6),
("2023-06-15", "Seattle", 22.4),
("2023-06-15", "Boston", 27.9),
("2023-06-15", "Atlanta", 31.5)
]
## Encuentra las ciudades con las temperaturas más altas
hottest_cities = heapq.nlargest(3, temperature_data, key=lambda x: x[2])
print("\nLas 3 ciudades más calientes:")
for city_data in hottest_cities:
print(f" {city_data[1]}: {city_data[2]}°C")
## Encuentra las ciudades con las temperaturas más bajas
coldest_cities = heapq.nsmallest(3, temperature_data, key=lambda x: x[2])
print("\nLas 3 ciudades más frías:")
for city_data in coldest_cities:
print(f" {city_data[1]}: {city_data[2]}°C")
## Aplicación 3: Redes sociales - Interacción del usuario
print("\n\nAPLICACIÓN 3: REDES SOCIALES - INTERACCIÓN DEL USUARIO")
print("=============================================")
## Datos de muestra de publicaciones en redes sociales (post_id, title, likes, comments, shares, timestamp)
posts = [
(1001, "Breaking News: Major Announcement", 3500, 420, 1200, datetime(2023, 6, 10, 12, 30)),
(1002, "Product Review: Latest Gadget", 2200, 380, 900, datetime(2023, 6, 11, 15, 45)),
(1003, "Tutorial: Python Programming", 1800, 650, 750, datetime(2023, 6, 12, 9, 15)),
(1004, "Travel Tips for Summer Vacation", 2700, 320, 1100, datetime(2023, 6, 13, 18, 20)),
(1005, "Recipe: Delicious Desserts", 3100, 450, 1500, datetime(2023, 6, 14, 11, 10)),
(1006, "Interview with Celebrity", 4200, 580, 2200, datetime(2023, 6, 15, 14, 25)),
(1007, "Health and Fitness Guide", 1500, 280, 600, datetime(2023, 6, 16, 8, 40)),
(1008, "Movie Review: Latest Blockbuster", 2900, 410, 950, datetime(2023, 6, 17, 20, 30)),
(1009, "Tech News: Industry Updates", 2000, 300, 800, datetime(2023, 6, 18, 13, 15)),
(1010, "DIY Home Improvement Projects", 1700, 520, 700, datetime(2023, 6, 19, 16, 50))
]
## Define una función para calcular la puntuación de interacción (suma ponderada de me gusta, comentarios, compartidos)
def engagement_score(post):
return post[2] + (post[3] * 2) + (post[4] * 3) ## me gusta + (comentarios * 2) + (compartidos * 3)
## Encuentra las 3 publicaciones principales por puntuación de interacción
top_engaging_posts = heapq.nlargest(3, posts, key=engagement_score)
print("\nLas 3 publicaciones más interactivas:")
for post in top_engaging_posts:
score = engagement_score(post)
print(f" ID de la publicación: {post[0]}")
print(f" Título: {post[1]}")
print(f" Puntuación de interacción: {score}")
print(f" (Me gusta: {post[2]}, Comentarios: {post[3]}, Compartidos: {post[4]})")
print(f" Publicado el: {post[5].strftime('%Y-%m-%d %H:%M')}")
print()
## Encuentra las 3 publicaciones principales por me gusta
top_liked_posts = heapq.nlargest(3, posts, key=lambda x: x[2])
print("Las 3 publicaciones con más me gusta:")
for post in top_liked_posts:
print(f" {post[1]}: {post[2]} me gusta")
## Encuentra las 3 publicaciones principales por comentarios
top_commented_posts = heapq.nlargest(3, posts, key=lambda x: x[3])
print("\nLas 3 publicaciones con más comentarios:")
for post in top_commented_posts:
print(f" {post[1]}: {post[3]} comentarios")
Ejecute el script para ver estas aplicaciones prácticas:
python3 practical_applications.py
Debería ver una salida detallada que muestra cómo encontrar los N elementos superiores se puede aplicar en escenarios del mundo real:
APLICACIONES PRÁCTICAS PARA ENCONTRAR LOS N ELEMENTOS SUPERIORES EN LISTAS DE PYTHON
APLICACIÓN 1: COMERCIO ELECTRÓNICO - ANÁLISIS DE VENTAS DE PRODUCTOS
==================================================
Los 3 productos más vendidos (por unidades vendidas):
Wireless Earbuds: 2100 unidades vendidas a $129.99
Power Bank: 1900 unidades vendidas a $49.99
Bluetooth Speaker: 1750 unidades vendidas a $79.99
Los 3 productos principales por ingresos:
Smartphone X: $1,124,987.50 de ingresos (1250 unidades a $899.99)
Laptop Pro: $1,156,991.10 de ingresos (890 unidades a $1299.99)
Wireless Earbuds: $272,979.00 de ingresos (2100 unidades a $129.99)
APLICACIÓN 2: ANÁLISIS DE DATOS - MONITOREO DE TEMPERATURA
====================================================
Las 3 ciudades más calientes:
Phoenix: 40.2°C
Houston: 35.7°C
Miami: 33.8°C
Las 3 ciudades más frías:
Seattle: 22.4°C
Boston: 27.9°C
Los Angeles: 28.3°C
APLICACIÓN 3: REDES SOCIALES - INTERACCIÓN DEL USUARIO
=============================================
Las 3 publicaciones más interactivas:
ID de la publicación: 1006
Título: Interview with Celebrity
Puntuación de interacción: 11560
(Me gusta: 4200, Comentarios: 580, Compartidos: 2200)
Publicado el: 2023-06-15 14:25
ID de la publicación: 1005
Título: Recipe: Delicious Desserts
Puntuación de interacción: 8450
(Me gusta: 3100, Comentarios: 450, Compartidos: 1500)
Publicado el: 2023-06-14 11:10
ID de la publicación: 1001
Título: Breaking News: Major Announcement
Puntuación de interacción: 8060
(Me gusta: 3500, Comentarios: 420, Compartidos: 1200)
Publicado el: 2023-06-10 12:30
Las 3 publicaciones con más me gusta:
Interview with Celebrity: 4200 me gusta
Breaking News: Major Announcement: 3500 me gusta
Recipe: Delicious Desserts: 3100 me gusta
Las 3 publicaciones con más comentarios:
Tutorial: Python Programming: 650 comentarios
Interview with Celebrity: 580 comentarios
DIY Home Improvement Projects: 520 comentarios
Estos ejemplos demuestran cómo las técnicas que ha aprendido se pueden aplicar a escenarios del mundo real, como el análisis de ventas de comercio electrónico, el análisis de datos meteorológicos y las métricas de interacción en redes sociales. En cada caso, la capacidad de encontrar eficientemente los N elementos superiores es crucial para extraer información valiosa de los datos.