• WORD
  • FORMATO AUTOMATICO Y ESTILOS
  • INSERTAR CUADRO DE TEXTO Y ECUACION
  • REFERENCIASTABLA DE CONTENIDO Y BIBLIOGRAFIA
  • Ir a Prácticas
  • EXCEL
  • FORMULAS I y II
  • TABLAS Y GRAFICOS DINAMICOS
  • SUBTOTALES Y BASE DE DATOS
  • MACROS
  • Ir a Prácticas
  • AUTOCAD
  • 2D:DIBUJO Y ACOTAR
  • INSERTAR BLOQUES Y PLOT
  • 3D: MODELADO Y EDICION DE SOLIDOS
  • RENDER Y ANIMACIONES
  • Ir a Prácticas

viernes, 25 de septiembre de 2026

diseño web: principios

 

ETIQUETAS HTML

 <nav>: Define un bloque de enlaces de navegación de la página (como el menú principal o el menú del pie de página).

<a>: Crea un hipervínculo o enlace. Permite conectar al usuario con otra página web, un archivo o una sección del mismo sitio.

<article>: Representa una composición autónoma e independiente en un documento, que puede ser distribuida o reutilizada por separado (por ejemplo, un post de un blog o una noticia).

<h1>: Indica el título principal de más alto nivel en una página. Solo debe usarse uno por documento para mantener una buena jerarquía.

<section>: Agrupa contenido relacionado por temática dentro de una página, sirviendo para estructurar el documento en capítulos o secciones lógicas.

<li>: Representa un elemento o ítem dentro de una lista, ya sea ordenada o desordenada.

<ul>: Define una lista desordenada, es decir, una lista de elementos donde el orden no importa y que usualmente se muestra con viñetas (puntos).

<form>: Crea un formulario interactivo para que el usuario introduzca datos (como texto o casillas de verificación) y los envíe a un servidor.

<button>: Representa un botón cliqueable, utilizado principalmente para enviar formularios o activar funciones interactivas mediante JavaScript.

Ejemplo

Html con  formularios y botones

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>

<body>

    <form action="/enviar-datos" method="POST">

  <!-- Campo de texto para el nombre -->

  <label for="nombre">Nombre:</label>

  <input type="text" id="nombre" name="usuario_nombre" required>

    <br><br>

 

  <!-- Campo para el correo electrónico -->

  <label for="correo">Correo electrónico:</label>

  <input type="email" id="correo" name="usuario_correo" required>

  <br><br>

  <!-- Botón para enviar el formulario -->

  <button type="submit">Enviar Formulario</button>

 

</form>

<button id="botton">fondo</button>

<script src="script.js"></script>

 

</body>

</html>

EJEMPLO 2

html con nav

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <link rel="stylesheet" href="estilos.css">

</head>

<body>

    <nav class="navbar">

       <ul class="nav-links">

        <li><a href="#"> nosotros</a></li>

         <li><a href="#"> platillos</a></li>

         <li><a href="#"> locales</a></li>

         <li><a href="#">redes sociales</a></li>

 

    </ul>

    </nav>

    <script src="script.js"></script>

EJEMPLO 3

<!DOCTYPE html>

<html lang="es">

<head>

    <meta charset="UTF-8">

    <title>Ejemplo de Estructura Semántica</title>

    <link rel="stylesheet" href="estilos.css">

</head>

<body>

 

    <!-- 1. <nav>: Contenedor de la navegación principal del sitio -->

    <nav>

        <ul>

            <li><a href="#inicio">Inicio</a></li>

            <li><a href="#blog">Blog</a></li>

            <li><a href="#contacto">Contacto</a></li>

        </ul>

    </nav>

 

    <!-- 2. <section>: Agrupa una sección temática de la página -->

    <section id="blog">

       

        <!-- 3. <h1>: El título principal de esta sección de noticias -->

        <h1>Últimas Noticias de Tecnología</h1>

 

        <!-- 4. <article>: Contenido independiente y reutilizable (Post 1) -->

        <article>

            <h2>El futuro de la Inteligencia Artificial</h2>

            <p>La IA sigue transformando el desarrollo web de formas sorprendentes, optimizando tareas repetitivas...</p>

            <a href="#leer-mas-1">Leer más</a>

        </article>

 

        <!-- Otro <article> dentro de la misma sección (Post 2) -->

        <article>

            <h2>Ventajas de usar HTML Semántico</h2>

            <p>Escribir código limpio no solo ayuda a otros programadores, sino que mejora drásticamente el SEO de tu web...</p>

            <a href="#leer-mas-2">Leer más</a>

        </article>

 

    </section>

<script src="script.js"></script>

</body>

</html>

 

CSS

FLEXBOX

Flexbox (Flexible Box Layout)

Concepto: Es un modelo de diseño unidimensional (orientado a filas o columnas) pensado para distribuir el espacio y alinear elementos dentro de un contenedor, incluso cuando sus tamaños son desconocidos o dinámicos.

Propiedades para el Contenedor (Padre)

  • display: flex;: Activa el contexto flexible en el contenedor.
  • flex-direction: Define la dirección de los elementos (eje principal). Puede ser row (fila horizontal) o column (columna vertical).
  • justify-content: Alinea los elementos a lo largo del eje principal (horizontal por defecto). Opciones: center, space-between, space-around, flex-start, flex-end.
  • align-items: Alinea los elementos a lo largo del eje secundario (vertical por defecto). Opciones: center, stretch, flex-start, flex-end.
  • flex-wrap: Controla si los elementos se fuerzan en una sola línea o si pueden pasar a la siguiente línea (wrap).
  • gap: Define de forma directa el espacio de separación entre los elementos del contenedor.

POSITION:

RELATIVE: El elemento permanece en su lugar original, pero puedes moverlo ligeramente desde esa posición sin afectar a los demás.

ABSOLUTE: El elemento se desconecta por completo del flujo y flota libremente en la página.

FIXED: El elemento se desconecta del flujo y se queda "congelado" o pegado en la pantalla, sin importar cuánto scroll hagas.

EJEMPLOS

body{

    background-color: rgb(187, 152, 233);

   

}

.navbar {

  display: flex;

  justify-content: space-between; /* Separa el logo de los enlaces */

  align-items: center;            /* Centra todo verticalmente */

  background-color: #5c1212;         /* Color de fondo oscuro */

  padding: 15px 30px;             /* Espacio interno */

}

.nav-links {

  display: flex;                  /* Pone los enlaces en línea horizontal */

  list-style: none;               /* Quita los puntos de la lista (bullet points) */

  gap: 20px;                      /* Separa los enlaces entre sí */

}

.nav-links a {

  color: #fff;                    /* Texto blanco */

  text-decoration: none;          /* Quita el subrayado predeterminado */

  font-size: 18px;

  transition: color 0.3s ease;    /* Transición suave para el efecto hover */

}

 

/* 5. Efecto al pasar el cursor (Hover) */

.nav-links a:hover {

  color: #ff7b00;                 /* Cambia a color naranja al pasar el mouse */

}

JAVASCRIPT

Tipos de datos: Son las categorías de información que JavaScript puede entender y procesar. Los más comunes son los números (number), los textos (string), los valores lógicos de verdadero o falso (boolean), y la ausencia de valor (null o undefined).

Caracteres de comparación: Son operadores matemáticos y lógicos que se usan para contrastar dos valores y devolver un resultado verdadero o falso. Por ejemplo: == (igualdad débil), === (igualdad estricta), != (diferente), > (mayor que) y < (menor que).

console.log(): Es una función especial que se utiliza para mostrar mensajes, valores o errores en la consola del navegador. Los programadores la usan como una herramienta de diagnóstico para espiar qué está pasando dentro del código mientras se ejecuta.

Javascritp con tipos de datos

console.log("ejemplo");

var nombre= "joaquin";

var numero =14;

var pago=true;

var peso=40.43;

alert("este es un ejemplo de javascritp "+ nombre);

console.log("nombre " + nombre + " " + typeof nombre);

console.log("numero " + numero + " " + typeof numero);

console.log("pago " + pago + " " + typeof pago);

console.log("peso " + peso + " " + typeof peso);

 

console.log("conparativos");

console.log(7>4);

console.log(45<1);

var x=4;

console.log(4==x);

console.log(7==="7")

 

SENTENCIAS DE CONTROL

 

Bucle if (Condicional): Es una estructura de control que permite tomar decisiones en el código. Evalúa si una condición es verdadera para ejecutar un bloque de instrucciones; si es falsa, puede saltarse ese código o ejecutar una alternativa (else).

Bucle for (Ciclo): Es una estructura que sirve para repetir un bloque de código un número específico de veces. Utiliza un contador interno que va aumentando o disminuyendo en cada vuelta hasta que se cumple la condición de parada

 

Javascript con if

var numero1=prompt("ingrese el numero 1");

var numero2=prompt("ingrese el numero 2");

var total=numero1+numero2;

if(total>=50){

    console.log("el numero es alto");

}

else{

    console.log("el numero es bajo");

}

Javascript

for(let i=1;i<=5;i++){

    console.log("numero ",i);

}

for(let i=1;i<=5;i++){

    console.log("*".repeat(i));

}

 

 

  for (let i = 0; i < 5; i++) {

    const espacios = ' '.repeat(5 - i - 1);

    const asteriscos = '*'.repeat(2 * i + 1);

    console.log(espacios + asteriscos);

  }

 

Javascript con getlementby

const respuestas=document.getElementById("botton");

document.body.style.transition="background-color 0.7s ease";

respuestas.onclick = () => document.body.style.backgroundColor="blue";

 

 

viernes, 28 de agosto de 2026

INTRODUCCION A LA PROGRAMACION CON PYTHON

 Python

Python es un lenguaje de programación de alto nivel, multiparadigma y de código abierto, diseñado para ser legible y eficiente. Su sintaxis limpia facilita el desarrollo de software complejo, desde aplicaciones web hasta scripts de automatización. Es el estándar de la industria en inteligencia artificial, ciencia de datos y aprendizaje automático gracias a su extenso ecosistema de bibliotecas. Además, al ser interpretado y multiplataforma, permite ejecutar el mismo código en casi cualquier sistema operativo sin necesidad de modificarlo.

Tipos numéricos

  • Enteros (int): Almacenan números sin decimales, positivos o negativos, sin límite de tamaño. Ejemplo: 42, -3.
  • Decimales (float): Almacenan números con punto decimal. Ejemplo: 3.14, -0.01.
  • Complejos (complex): Tienen una parte real y una imaginaria con la letra j.

Texto y lógica

  • Cadenas de texto (str): Secuencias de caracteres delimitadas por comillas simples o dobles. Ejemplo: "Hola mundo".
  • Booleanos (bool): Representan valores de verdad: True (verdadero) o False (falso).

Colecciones de datos

  • Listas (list): Colecciones ordenadas y mutables que pueden contener varios tipos de datos, definidas entre corchetes. Ejemplo: [1, "dos", 3.0].
  • Tuplas (tuple): Colecciones ordenadas pero inmutables (no se pueden modificar tras crearlas), definidas entre paréntesis. Ejemplo: (1, 2, 3).
  • Conjuntos (set): Colecciones desordenadas de elementos únicos, definidas entre llaves. Ejemplo: {"a", "b", "c"}.
  • Diccionarios (dict): Almacenan pares de clave: valor. Ejemplo: {"nombre": "Ana", "edad": 25}.

ENTRADA Y SALIDA DE DATOS

La entrada y salida de datos se realiza principalmente mediante las funciones input() para capturar información del usuario y print() para mostrar resultados en la pantalla.

nombre = input("¿Cómo te llamas?: ")

edad_texto = input("¿Cuántos años tienes?: ")

edad = int(edad_texto)  # Conversión de texto a número entero

print(f"Hola {nombre}, el próximo año tendrás {edad + 1} años.")

 

NUMERO ALEATORIOS

Para generar un números aleatorios se  importa la librería integrada random y usa la función random.randint(min, max) para enteros o random.random() para decimales entre 0 y 1.

EJEMPLOS:

print("ALEATORIOS")

import random

 

# Generar un entero entre 1 y 10 (ambos incluidos)

numero_entero = random.randint(1, 10)

print(f"Entero aleatorio (1-10): {numero_entero}")

 

# Generar un número par entre 0 y 100

par_aleatorio = random.randrange(0, 101, 2)

print(f"Número par aleatorio (0-100): {par_aleatorio}")

 

# Generar un decimal entre 0.0 y 1.0

decimal_cero_uno = random.random()

print(f"Decimal entre 0 y 1: {decimal_cero_uno}")

 

# Generar un decimal en un rango específico (ej. entre 5.5 y 10.5)

decimal_rango = random.uniform(5.5, 10.5)

print(f"Decimal en rango (5.5-10.5): {decimal_rango}")

 

frutas = ["manzana", "plátano", "naranja", "uva", "sandía"]

 

# Elegir UN elemento al azar

opcion = random.choice(frutas)

print(f"Fruta elegida: {opcion}")

 

# Elegir VARIOS elementos sin que se repitan (ej. 3 frutas)

muestra = random.sample(frutas, 3)

print(f"Muestra de 3 frutas: {muestra}")

 

# Mezclar una lista original en orden aleatorio

baraja = [1, 2, 3, 4, 5]

random.shuffle(baraja)

print(f"Lista mezclada: {baraja}")

SLICING

El slicing (o rebanado) en Python es una función que permite extraer porciones de secuencias como listas, tuplas o cadenas de texto usando la sintaxis [inicio:fin:paso]. El valor de inicio se incluye, el fin se excluye, y el paso define el tamaño del salto

Sintaxis Básica

La estructura general del rebanado es:

secuencia[inicio : fin : paso]

  • inicio: El índice donde empieza el corte (se incluye). Si se omite, empieza desde el primer elemento (0).
  • fin: El índice donde termina el corte (no se incluye). Si se omite, llega hasta el final de la secuencia.
  • paso: El tamaño del salto entre cada elemento. Si se omite, el valor por defecto es 1

EJEMPLOS;

frutas = ["Manzana", "Plátano", "Naranja", "Mango", "Uvas"]

print(frutas[1:4])

# Resultado: ['Plátano', 'Naranja', 'Mango']

numeros = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(numeros[::2]) 

# Salta de 2 en 2: [0, 2, 4, 6, 8]

print(frutas[::-1]) 

# Resultado: ['Uvas', 'Mango', 'Naranja', 'Plátano', 'Manzana']

LISTAS

Una lista en Python es una estructura de datos integrada que permite almacenar múltiples elementos en una sola variable de forma ordenada y mutable. Esto significa que los elementos guardan un orden específico basado en un índice numérico (que comienza en 0) y que puedes modificar, añadir o eliminar elementos después de haber creado la lista.

EJEMPLO:

# Ejemplo de una lista

mis_frutas = ["manzana", "plátano", "cereza"]

FUNCIONES

1. len(lista) — Obtener el tamaño de la lista

Es una función global de Python que te devuelve la cantidad total de elementos que contiene la lista.

numeros = [10, 20, 30, 40]

total = len(numeros)

print(total)  # Resultado: 4

 

2. .append(elemento) — Agregar al final

Este método añade un nuevo elemento únicamente al final de la lista existente.

animales = ["perro", "gato"]

animales.append("loro")

print(animales)  # Resultado: ['perro', 'gato', 'loro']

 

3. .insert(índice, elemento) — Insertar en una posición específica

A diferencia de .append(), este método te permite elegir la posición exacta (índice) donde deseas colocar el nuevo elemento, moviendo el resto hacia la derecha.

colores = ["rojo", "azul", "verde"]

# Inserta "amarillo" en la posición 1 (el segundo lugar)

colores.insert(1, "amarillo")

print(colores)  # Resultado: ['rojo', 'amarillo', 'azul', 'verde']

 

4. .remove(elemento) — Eliminar por valor

Busca el elemento que le indiques dentro de la lista y elimina su primera aparición. Si el elemento no existe, arrojará un error.

coches = ["Toyota", "Ford", "Mazda", "Ford"]

coches.remove("Ford")  # Elimina solo el primer "Ford" que encuentra

 

print(coches)  # Resultado: ['Toyota', 'Mazda', 'Ford']

5. .pop(índice) — Eliminar por posición y extraer

Elimina el elemento que se encuentra en el índice indicado y te lo devuelve (por si quieres guardarlo en otra variable). Si no le pasas ningún índice entre los paréntesis, eliminará de forma automática el último elemento.

tareas = ["programar", "comer", "dormir"]

ultima_tarea = tareas.pop()  # Elimina "dormir" y lo guarda en la variable

print(tareas)        # Resultado: ['programar', 'comer']

print(ultima_tarea)  # Resultado: "dormir"

6.sort() — Ordenar la lista (Sorter)

Este método ordena los elementos de la lista de forma ascendente (de menor a mayor para números, y en orden alfabético para textos).

# Ejemplo con números

numeros = [5, 1, 9, 3]

numeros.sort()

print(numeros)  # Resultado: [1, 3, 5, 9]

 

# Ejemplo con texto (Orden alfabético)

letras = ["b", "z", "a"]

letras.sort()

print(letras)   # Resultado: ['a', 'b', 'z']

 

* Ordenar al revés (Descendente)

Si pasas el argumento reverse=True dentro de los paréntesis, puedes ordenar de mayor a menor.

puntuaciones = [10, 50, 20]

puntuaciones.sort(reverse=True)

print(puntuaciones)  # Resultado: [50, 20, 10]

 

7 .reverse() — Poner la lista en reversa

Este método simplemente invierte el orden físico de los elementos en la lista, sin importar si están ordenados alfabética o numéricamente. El que estaba al último pasa a ser el primero, el penúltimo pasa a ser el segundo, y así sucesivamente.

# Ejemplo de reversa pura

ingredientes = ["tomate", "queso", "harina"]

ingredientes.reverse()

print(ingredientes)  # Resultado: ['harina', 'queso', 'tomate']

 

ESTRUCTURAS CONDICIONALES

IF, ELIF, ELSE:

El if es la estructura condicional más básica en programación y sirve para ejecutar un bloque de código solo si se cumple una condición específica (es decir, si la condición es verdadera). Si la condición no se cumple, el programa simplemente ignora ese código y continúa con el resto de tu archivo.

Se puede entender como un interruptor: si la condición es verdadera, la luz del código se enciende; si es falsa, se queda apagada.

EJEMPLO:

edad = 15

 if edad >= 18:

    print("Puedes pasar, eres mayor de edad.")

elif edad >= 14:

    print("Puedes pasar solo a la zona de adolescentes.")

else:

    print("Lo siento, eres muy menor para entrar.")

 

MATCH-CASE:

El bloque match evalúa una variable y compara su valor contra distintos patrones usando la palabra clave case. Si ninguna opción coincide, se puede usar un guion bajo (_) como valor por defecto.

EJEMPLO

 dia = "lunes"

match dia:

    case "lunes":

        print("Es el primer día laboral.")

    case "viernes":

        print("¡Por fin es viernes!")

    case _:

        print("Es otro día de la semana.")

BUCLE ITERATIVOS

 

FOR

El bucle for en Python es una estructura de control que se utiliza para iterar (recorrer) los elementos de una secuencia de forma secuencial. Una secuencia puede ser una lista, un string, un diccionario, un set o un rango numérico.

A diferencia de otros lenguajes de programación, el for en Python funciona como un foreach, lo que significa que pasa por cada elemento directamente en lugar de usar un contador numérico obligatorio.

 

 

EJEMPLOS:

print("bucle for")

# Iterar sobre una lista

frutas = ["manzana", "banana", "cereza"]

for fruta in frutas:

    print(fruta)

 

# Imprime números del 0 al 4

for i in range(5):

    print(i)

#posicion con enumerate

for indice, fruta in enumerate(frutas):

    print(f"Índice {indice}: {fruta}")

 

for i in range(1, 6):

    print(i)

# Resultado: 1, 2, 3, 4, 5

 

for i in range(5, 0, -1):

    print(i)

# Resultado: 5, 4, 3, 2, 1

 

for i in range(0, 26, 5):

    print(i)

# Resultado: 0, 5, 10, 15, 20, 25

 

for i in range(50, 19, -5):

    print(i)

# Resultado: 50, 45, 40, 35, 30, 25, 20

 

suma_total = 0

for i in range(5, 21, 5):  # Valores: 5, 10, 15, 20

    suma_total += i

    print(f"Sumando {i}, el total parcial es: {suma_total}")

 

print(f"Resultado final: {suma_total}")

# Resultado final: 50 (5 + 10 + 15 + 20)

 

# 1. Creamos la variable externa que acumulará los saltos

numero = 0

 

# 2. El bucle define cuántas veces queremos que se repita la acción

for _ in range(5):  # Se ejecutará 5 veces

    print(numero)

    numero += 2     # Sumamos 2 al valor actual de la variable externa

#En Python, cuando usas el guion bajo _ en el for, le estás diciendo al

# programa que no necesitas usar la variable del rango para nada.

  

WHILE

El bucle while en Python es una estructura de control que repite un bloque de código mientras una condición específica sea Verdadera (True).

A diferencia del bucle for (que recorre un número fijo de elementos), el while se utiliza cuando no sabes de antemano cuántas veces se tendrá que repetir el bucle, ya que depende completamente de que la condición cambie en algún momento para poder detenerse.

EJERCICIOS:

print("bucle while")

contador = 1

 

while contador <= 5:

    print(f"Número: {contador}")

    contador += 1  # Incremento para evitar un bucle infinito

#bucle while true para hacer un bucle en que se paraliza cuando ponemos un valor

while True:

    numero = int(input("Introduce un número positivo (o negativo para salir): "))

    print(f"Ingresaste: {numero}")

   

    # Condición de salida evaluada al final del ciclo

    if numero < 0:

        print("¡Bucle terminado!")

        break

 

while True:

    print("\n--- MENÚ ---")

    print("1. Saludar")

    print("2. Salir")

    opcion = input("Elige una opción: ")

 

    if opcion == "1":

        print("¡Hola! Qué tengas un gran día.")

    elif opcion == "2":

        print("Saliendo del programa...")

        break  # Rompe el bucle obligatoriamente

    else:

        print("Opción no válida, intenta de nuevo.")

 

#while con texto para salir

entrada = ""

 

while entrada.lower() != "salir":

    entrada = input("Escribe algo (o 'salir' para terminar): ")

    if entrada.lower() != "salir":

        print(f"Repitiendo: {entrada}")

 

print("Proceso finalizado.")

#bucle para salir con texto 2

while True:

    # 1. Se ejecuta esta parte del código obligatoriamente al menos una vez.

    accion = input("¿Quieres continuar? (si/no): ")

   

    # 2. Se evalúa la condición de salida.

    if accion == "no":

        print("Saliendo del bucle...")

        break  # 3. El 'break' detiene el bucle inmediatamente y salta al final.

 

# 4. El programa continúa aquí después del break.

print("Programa terminado.")

 

while True:

  texto = input("Escribe 'salir' para terminar: ")

  if texto == "salir":

    break  # Rompe el bucle y sale del programa

 

jueves, 23 de julio de 2026

FUNCIONES DE BUSQUEDA, FILTROS Y RANKING

 

FORMULAS DAX Y FUNCION NARRATIVA INTELIGENTE

ALL

La función ALL en Power BI (lenguaje DAX) es una función de tabla que devuelve todas las filas de una tabla o todos los valores de una columna, ignorando cualquier filtro que se haya aplicado. Se utiliza comúnmente para crear cálculos porcentuales o para comparar un subconjunto con el total general.

EJEMPLO:

ventas_totales = CALCULATE(SUM(TRABAJADORES[salarios]), ALL(TRABAJADORES))

ALLSELECTED

Devuelve todas las filas de una tabla o todos los valores de una columna, ignorando los filtros que se podrían haber aplicado dentro de la consulta, pero manteniendo los filtros que proceden de fuera.

La función ALLSELECTED obtiene el contexto que representa todas las filas y columnas de la consulta, a la vez que mantiene filtros y contextos explícitos distintos de los filtros de fila y columna. Esta función se puede usar para obtener totales visuales en consultas.

ALLSELECTED([<tableName> | <columnName>[, <columnName>[, <columnName>[,…]]]] )

EJEMPLO:

ventas_totales2 = CALCULATE(SUM(TRABAJADORES[salarios]), ALLSELECTED(TRABAJADORES[AREA]))

ALLEXCEPT:

La función ALLEXCEPT en DAX se usa para eliminar todos los filtros de una tabla, excepto en las columnas específicas que decidas conservar. Es un modificador de CALCULATE muy útil para calcular porcentajes sobre un total general o aplicar medidas a nivel de categoría ignorando otros filtros del reporte.

Sintaxis

ALLEXCEPT(Tabla, Columna1, Columna2...)

 Tabla: La tabla base de la que deseas limpiar los filtros.

 Columnas: La columna o columnas cuyos filtros deseas mantener activos en el contexto.

EJEMPLO:

ventas_totales3 = CALCULATE(SUM(TRABAJADORES[salarios]), ALLEXCEPT(TRABAJADORES,TRABAJADORES[AREA]))

 

DATATABLE

La función DATATABLE en DAX se usa para crear tablas estáticas directamente en el modelo de datos sin importar fuentes externas. Es ideal para tablas desconectadas o de parámetros

EJEMPLO:

EJEMPLO:

Sales Performance =

DATATABLE(

    "Region", STRING,

    "Product Category", STRING,

    "Marketing Spend", INTEGER,

    "Revenue", INTEGER,

    "Units Sold", INTEGER,

    "Customer Satisfaction", DOUBLE,

    {

        {"North", "Electronics", 45000, 280000, 1200, 4.5},

        {"North", "Clothing", 32000, 195000, 2800, 4.2},

        {"North", "Home & Garden", 28000, 165000, 1500, 4.0},

        {"North", "Sports", 18000, 98000, 900, 4.3},

        {"South", "Electronics", 52000, 310000, 1400, 4.6},

        {"South", "Clothing", 25000, 142000, 2200, 3.9},

        {"South", "Home & Garden", 35000, 210000, 1800, 4.4},

        {"South", "Sports", 22000, 125000, 1100, 4.1},

        {"East", "Electronics", 38000, 245000, 1050, 4.3},

        {"East", "Clothing", 42000, 268000, 3500, 4.5},

        {"East", "Home & Garden", 30000, 178000, 1650, 4.2},

        {"East", "Sports", 15000, 82000, 780, 3.8},

        {"West", "Electronics", 60000, 385000, 1650, 4.7},

        {"West", "Clothing", 28000, 158000, 2400, 4.0},

        {"West", "Home & Garden", 22000, 130000, 1200, 3.9},

        {"West", "Sports", 35000, 195000, 1450, 4.4}

    }

)

RELATED

La función RELATED en DAX permite traer valores desde el lado “uno” de una relación (tabla de dimensiones) hacia la tabla actual (lado “muchos” o tabla de hechos). Funciona de manera similar a la función BUSCARV de Excel, requiriendo obligatoriamente un contexto de fila y una relación previa entre ambas tablas

Sintaxis

RELATED(Columna_Destino)

Puntos clave sobre RELATED:

  • Requiere contexto de fila: Solo se puede usar directamente en columnas calculadas o dentro de funciones de iteración (como SUMX).
  • No se usa en medidas simples: Para medidas estándar que evalúan el total, no necesitas RELATED. Puedes usar directamente columnas de tablas relacionadas debido a la expansión automática de filtros de Power BI.
  • Dirección: Busca siempre desde la tabla de hechos (muchos) hacia la tabla de dimensiones (uno).

EJEMPLO:

salarios = RELATED(SALARIO[SUELDO])

RANKX

RANKX es una función iteradora de DAX que devuelve la posición o el rango de una expresión evaluada frente a una lista de valores. Su uso más común es crear rankings dinámicos en Power BI.

RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]])

EJEMPLO:

Ranking2 = RANKX(ALL(TRABAJADORES[AREA]),[total],,DESC,Dense)

  

 

NARRATIVA INTELIGENTE

Las narrativas inteligentes de Power BI utilizan inteligencia artificial para generar automáticamente resúmenes y explicaciones en lenguaje natural sobre sus datos. Estos textos se actualizan de forma dinámica y responden a los filtros aplicados en el informe, facilitando la comprensión y la toma de decisiones para los usuarios

PARA ACTIVARLO PODEMOS IR A OPCIONES Y ACTIVAR EN OPCIONES DE LOS OBJETOS VISUALES

USO DE ENCABEZADO EN OBJETOS VISUALES MODERNOS CON OPCIONES DE ESTILO ACTUALIZADO

PARA ACTIVAR TIENES QUE IR A ICONOS DE OBJETO VISUAL

 

viernes, 17 de julio de 2026

LIBRERIA MATPLOTLIB DE PYTHON

 MATPLOTLIB

es una de las librerías principales de Python para la visualización de datos, diseñada para crear gráficos estáticos, interactivos y animados en 2D y 3D. Funciona de forma natural con estructuras de datos de NumPy y Pandas, permitiendo generar gráficos con calidad para publicaciones científicas.

Funciones más importantes:
La librería se utiliza principalmente a través de su módulo matplotlib.pyplot. Aquí tienes las funciones más utilizadas:

  • plot(): Genera gráficos de líneas, uniendo una secuencia de puntos. Es ideal para observar tendencias y series temporales.
  • scatter(): Dibuja gráficos de dispersión (puntos sin conectar por líneas). Es fundamental para mostrar la correlación entre dos variables numéricas.
  • bar() o barh(): Crea diagramas de barras (verticales u horizontales), perfectos para comparar cantidades entre diferentes categorías
  • hist(): Calcula y dibuja histogramas, lo que ayuda a entender la distribución de frecuencia de una variable numérica.
  • subplots(): Crea una cuadrícula con múltiples gráficos (figura y ejes) dentro de una misma ventana. Permite organizar diferentes visualizaciones de manera estructurada.
  • xlabel() / ylabel() y title(): Añaden etiquetas a los ejes X e Y y establecen un título principal para el gráfico.
  • legend(): Muestra una leyenda para identificar qué representa cada color o línea en el gráfico.
  • show(): Muestra la ventana o el área donde se ha renderizado el gráfico.
  • savefig(): Guarda la figura generada en diferentes formatos de imagen de alta calidad, como PNG, PDF o SVG.

 EJEMPLOS:

Ejercicio 1: grafico de líneas

import matplotlib.pyplot as plt

 

# 1. Datos para los ejes X e Y

x = [1, 2, 3, 4, 5]

y = [1, 3, 7, 5, 7]

 

# 2. Crear el gráfico de línea

plt.plot(x, y, label='Mi línea', color='blue', marker='o')

 

# 3. Personalizar el gráfico

plt.title('Ejemplo Básico de Gráfico')

plt.xlabel('Eje X')

plt.ylabel('Eje Y')

plt.legend()

plt.grid(True)

 

# 4. Mostrar el gráfico en pantalla

plt.show()

 

#print("hola mundo")

 



2) grafico circular

import matplotlib.pyplot as plt

 

# 1. Datos para el gráfico

categorias = ['Manzanas', 'Plátanos', 'Naranjas', 'Uvas']

cantidades = [30, 45, 15, 10]

colores = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99'] # Colores opcionales

 

# 2. Crear el gráfico circular

plt.pie(

    cantidades,

    labels=categorias,

    autopct='%1.1f%%',   # Muestra el porcentaje con un decimal

    startangle=90,       # Rota el inicio del gráfico a 90 grados

    colors=colores       # Aplica la paleta de colores personalizada

)

 

# 3. Personalizar y mostrar

plt.title('Distribución de Frutas')

plt.show()

 


3)GRAFICO DE  LINEAS 2

import matplotlib.pyplot as plt

#datos

x=[1,2,4,7,10,14,15,17,19]

y=[2,3,5,7,8,9,14,17,14]

#crear el grafico de lineas

plt.plot(x,y)

#añadir titulo y etiquetas

plt.title("evolucion de produccion")

plt.xlabel("pedidos")

plt.ylabel("tn")

#añadir cuadricula

plt.grid(True)

#mostrar el grafico

plt.plot(x, y, color="#591A69", linewidth=3)

plt.show()

 

4) GRAFICOS DE COLUMNAS

import matplotlib.pyplot as plt

 

# 1. Definir los datos (Categorías y sus Valores)

categorias = ['A', 'B', 'C', 'D']

valores = [23, 45, 12, 30]

 

# Opcional: Definir una lista de colores en código HEX (uno para cada columna)

colores_hex = ['#3498db', '#e74c3c', '#2ecc71', '#f1c40f']

 

# 2. Crear el gráfico de columnas

# Si quieres un solo color para todas, usa: color='#3498db'

plt.bar(categorias, valores, color=colores_hex, edgecolor='#2c3e50', linewidth=1.5)

 

# 3. Personalizar el diseño

plt.title('Gráfico de Columnas con Colores Personalizados', fontsize=14, fontweight='bold')

plt.xlabel('Categorías', fontsize=12)

plt.ylabel('Valores', fontsize=12)

plt.grid(axis='y', linestyle='--', alpha=0.7) # Cuadrícula solo en el eje Y

 

# 4. Mostrar el resultado


plt.show()

 

5) GRAFICO DE PUNTOS

import matplotlib.pyplot as plt

 

# 1. Generar 50 datos usando las herramientas nativas de Python

# Creamos una secuencia del 1 al 50 para el eje X

x = list(range(1, 51))

 

# Generamos 50 valores para el eje Y usando una fórmula matemática (ej. una curva con saltos)

y = [(i ** 1.5) + (i * 2 if i % 2 == 0 else -i * 3) for i in x]

 

# 2. Crear el gráfico de puntos

plt.scatter(x, y, color='#2ecc71', s=50, marker='o', edgecolor='#27ae60')

 

# 3. Personalizar el diseño


plt.title('Gráfico de 50 Puntos ', fontsize=14)

plt.xlabel('Eje X (Índice)')

plt.ylabel('Eje Y (Valor)')

plt.grid(True, linestyle='--', alpha=0.5)

 

# 4. Mostrar el gráfico

plt.show()

 

7)grafico de colores

import matplotlib.pyplot as plt

 

# 1. Crear una matriz de datos 5x5 usando listas nativas de Python

# Cada fila representa una categoría y cada columna una variable

datos = [

    [43, 14, 25, 17, 33],

 [44, 81, 72, 18, 32],

 [35, 20, 27, 25, 18],

 [47, 13, 22, 23, 11],

  [40, 85, 25, 60, 30],

]

 

# Etiquetas para los ejes

ciudades = ['Madrid', 'Barcelona', 'Valencia', 'Sevilla', 'Bilbao']

meses = ['Ene', 'Feb', 'Mar', 'Abr', 'May']

 

# 2. Crear la figura y el mapa de calor

fig, ax = plt.subplots(figsize=(6, 5))

 

# 'cmap' define la paleta de colores (ej: 'viridis', 'coolwarm', 'inferno', 'magma')

# 'interpolation' define si se ven los pixeles duros o difuminados

im = ax.imshow(datos, cmap='coolwarm', interpolation='nearest')

 

# 3. Agregar la barra de color (leyenda de intensidad)

cbar = ax.figure.colorbar(im, ax=ax)

cbar.ax.set_ylabel("Escala de Valores", rotation=-90, va="bottom")

 

# 4. Personalizar los ejes con sus nombres de filas y columnas

ax.set_xticks(range(len(meses)))

ax.set_xticklabels(meses)

 

ax.set_yticks(range(len(ciudades)))

ax.set_yticklabels(ciudades)

 

# 5. Opcional: Agregar el número exacto dentro de cada celda

for i in range(len(ciudades)):

    for j in range(len(meses)):

        # Si el valor es muy alto o bajo, puedes cambiar el color del texto para que se lea bien

        color_texto = "white" if datos[i][j] > 70 or datos[i][j] < 25 else "black"

        ax.text(j, i, str(datos[i][j]), ha="center", va="center", color=color_texto, fontweight='bold')

 

# 6. Títulos y ajustes finales

plt.title('Mapa de Calor - Datos de Ventas por Ciudad', fontsize=14, pad=15)

plt.tight_layout()

 

# 7. Mostrar el gráfico

plt.show()

 

 


8) grafico tridimensional

 import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

fig=plt.figure()

ax=fig.add_subplot(111,projection="3d")

ax.plot([0,1],[0,4],[0,7])

plt.show()