Cómo crear un panel de análisis interactivo de un extremo a otro utilizando las funciones de PyGWalker para una exploración de datos detallada
def generate_advanced_dataset(): np.random.seed(42) fecha_inicio = fechahora(2022, 1, 1) fechas = [start_date + timedelta(days=x) for x in range(730)]
categorías = [‘Electronics’, ‘Clothing’, ‘Home & Garden’, ‘Sports’, ‘Books’]
productos = { ‘Electrónica’: [‘Laptop’, ‘Smartphone’, ‘Headphones’, ‘Tablet’, ‘Smartwatch’]’Ropa’: [‘T-Shirt’, ‘Jeans’, ‘Dress’, ‘Jacket’, ‘Sneakers’]’Casa y jardín’: [‘Furniture’, ‘Lamp’, ‘Rug’, ‘Plant’, ‘Cookware’]’Deportes’: [‘Yoga Mat’, ‘Dumbbell’, ‘Running Shoes’, ‘Bicycle’, ‘Tennis Racket’]’Libros’: [‘Fiction’, ‘Non-Fiction’, ‘Biography’, ‘Science’, ‘History’]
} n_transacciones = 5000 datos = []
para _ en rango(n_transacciones): fecha = np.random.choice(fechas) categoría = np.random.choice(categorías) producto = np.random.choice(productosAI Shorts) base_prices = { ‘Electrónica’: (200, 1500), ‘Ropa’: (20, 150), ‘Hogar y jardín’: (30, 500), ‘Deportes’: (25, 300), ‘Libros’: (10, 50) } precio = np.random.uniform(*base_pricesAI Shorts) cantidad = np.elección aleatoria([1, 1, 1, 2, 2, 3]pag=[0.5, 0.2, 0.15, 0.1, 0.03, 0.02]) segmento_cliente = np.random.choice([‘Premium’, ‘Standard’, ‘Budget’]pag=[0.2, 0.5, 0.3]) grupo_edad = np.random.choice([’18-25′, ’26-35′, ’36-45′, ’46-55′, ’56+’]) región = np.elección aleatoria([‘North’, ‘South’, ‘East’, ‘West’, ‘Central’]) mes = fecha.mes factor_estacional = 1.0 si el mes está en [11, 12]: factor_estacional = 1,5 elif mes en [6, 7]: factor_estacional = 1.2 ingresos = precio * cantidad * descuento del factor_estacional = np.random.choice([0, 5, 10, 15, 20, 25]pag=[0.4, 0.2, 0.15, 0.15, 0.07, 0.03]) canal_marketing = np.random.choice([‘Organic’, ‘Social Media’, ‘Email’, ‘Paid Ads’]) base_satisfaction = 4.0 si segmento_cliente == ‘Premium’: base_satisfaction += 0.5 si descuento > 15: base_satisfaction += 0.3 satisfacción = np.clip(base_satisfaction + np.random.normal(0, 0.5), 1, 5) data.append({ ‘Fecha’: fecha, ‘Categoría’: categoría, ‘Producto’: producto, ‘Precio’: redondo(precio, 2), ‘Cantidad’: cantidad, ‘Ingresos’: redondo(ingresos, 2), ‘Segmento_cliente’: segmento_cliente, ‘Grupo_edad’: grupo_edad, ‘Región’: región, ‘%_descuento’: descuento, ‘Canal_marketing’: canal_marketing, ‘Satisfacción_cliente’: ronda(satisfacción, 2), ‘Mes’: date.strftime(‘%B’), ‘Año’: fecha.año, ‘Trimestre’: f’Q{(fecha.mes-1)//3 + 1}’ }) df = pd.DataFrame(data) df[‘Profit_Margin’] = redondo(gl[‘Revenue’] * (1 – gl[‘Discount_%’]/100) * 0,3, 2) gl[‘Days_Since_Start’] = (gl[‘Date’] – df[‘Date’].min()).dt.days devuelve df