¿Cómo comparo contra el mismo periodo del año pasado?
Compara contra el mismo tramo del año pasado con intervalos semiabiertos, para que un año a medias no parezca una caída.
Curso gratis. Tu Maestro, una IA, .
¿Vamos mejor que el año pasado?
Es 30 de junio de 2026 y la dirección de Café Altura pregunta si vamos mejor que el año pasado. La respuesta rápida suma lo vendido en 2026 y lo compara con lo vendido en 2025:
- 2026, hasta hoy: 6,980,100 pesos.
- 2025 completo: 12,984,830 pesos.
- Cambio: -46.2%.
El número es aritmética correcta y conclusión falsa. 2026 lleva seis meses y 2025 tiene doce. La comparación justa es el mismo tramo del calendario: enero a junio de 2025, que vendió 6,468,030 pesos. Contra ese tramo, 2026 va 7.9% arriba.
Mover una fecha un año o un mes atrás parece trivial, y tiene orillas. Predice.
Dos fechas que no tienen equivalente exacto un periodo antes. Escribe qué crees que da cada una y por qué.
Dos fechas que no tienen equivalente exacto un periodo antes. Escribe qué crees que da cada una y por qué.
Un mes antes del 31 de marzo y un año antes del 29 de febrero
import duckdb
print(duckdb.sql("""
SELECT
(DATE '2026-03-31' - INTERVAL 1 MONTH)::DATE::VARCHAR AS un_mes_antes,
(DATE '2024-02-29' - INTERVAL 1 YEAR)::DATE::VARCHAR AS un_anio_antes
""").fetchall())
Adivinar está bien: se guarda tal como la escribiste para compararla. Solo tú y tu Maestro ven tus predicciones.
Cómo comparar periodos
Tres reglas cubren casi todos los casos:
- Compara tramos con el mismo calendario. Escribe los dos periodos con intervalos semiabiertos:
>= '2026-01-01' AND < '2026-07-01'contra>= '2025-01-01' AND < '2025-07-01'. Para un mes, el mes completo de cada año: marzo de 2026 vendió 1,229,670 pesos y marzo de 2025, 1,148,240, un 7.1% más. - Compara periodos completos. Si tus datos llegan a mitad de mes, el mes actual está incompleto y va a salir abajo. Aquí los datos llegan al 30 de junio, así que junio está completo.
- Por día, mira el día de la semana. El 2 de marzo de 2026 fue lunes y el 2 de marzo de 2025 fue domingo. Una cafetería no vende igual en lunes que en domingo. 364 días antes (52 semanas) cae el mismo día de la semana: el lunes 3 de marzo de 2025.
Si tu negocio compara semanas o días contra el año pasado, revisa con tu Maestro qué fecha usar.
Un filtro por periodo y una suma para cada año:
f = data["fecha"]
v26 = data.loc[(f >= "2026-01-01") & (f < "2026-07-01"), "ventas"].sum()
v25 = data.loc[(f >= "2025-01-01") & (f < "2025-07-01"), "ventas"].sum()
print(round(100 * (v26 - v25) / v25, 1))FILTER suma solo las filas que cumplen su condición, así que los dos periodos caben en una consulta:
SELECT
sum(ventas) FILTER (WHERE fecha >= '2026-01-01' AND fecha < '2026-07-01') AS ventas_2026,
sum(ventas) FILTER (WHERE fecha >= '2025-01-01' AND fecha < '2025-07-01') AS ventas_2025
FROM ventas_diarias;Inténtalo
La consulta compara, por sucursal, enero a junio de 2026 contra todo 2025, y todas parecen caer a la mitad. Corrige el periodo de 2025 para que sea el mismo tramo. Una buena respuesta tiene tres filas con cambios positivos, entre 7 y 9%. Si nunca habías visto FILTER, pídele a tu Maestro que te lo explique con esta misma consulta.
Por sucursal, compara las ventas de enero a junio de 2026 con las del mismo periodo de 2025 y calcula el cambio porcentual con un decimal.
Tu turno
Por sucursal, compara las ventas de enero a junio de 2026 con las del mismo periodo de 2025 y calcula el cambio porcentual con un decimal.
Tablas: ventas_diarias (fecha, sucursal, ventas)
ventas_diarias · 1,598 filas
| Columna | Tipo |
|---|---|
| fecha El día de la venta. | DATE |
| sucursal Roma, Coyoacán o Del Valle. | VARCHAR |
| ventas Ventas del día en pesos. | BIGINT |
Primeras filas
| fecha | sucursal | ventas |
|---|---|---|
| 2025-01-02 | Roma | 12120 |
| 2025-01-02 | Coyoacán | 10650 |
| 2025-01-02 | Del Valle | 8880 |
Cada ejecución empieza con copias nuevas de las tablas del curso, así que puedes probar lo que quieras. Tab agrega sangría; para salir del editor, presiona Escape y luego Tab.
Listo para ejecutar tu consulta.
Inténtalo sin ayuda
Ahora en pandas: compara las ventas de toda la cadena en marzo de 2026 contra marzo de 2025 e imprime los dos totales y el cambio porcentual con un decimal. Una buena respuesta da 7.1.
Compara las ventas de la cadena en marzo de 2026 contra marzo de 2025: imprime los dos totales y el cambio porcentual con un decimal.
Compara las ventas de la cadena en marzo de 2026 contra marzo de 2025: imprime los dos totales y el cambio porcentual con un decimal.
Ejecuta tu código para ver lo que imprime y el valor de su última expresión. Cada ejecución empieza de nuevo. Ctrl+Enter ejecuta tu código. Tab agrega sangría; para salir del editor, presiona Escape y luego Tab.
Listo para ejecutar tu código.
Ejecuta tu código para ver su salida aquí.
Datos: ventas-diarias, 1,598 filas
Enter guarda una celda y Escape la deja como estaba. Deja una celda vacía para un valor faltante.
| Fila | Quitar | |||
|---|---|---|---|---|
| 1 | ||||
| 2 | ||||
| 3 | ||||
| 4 | ||||
| 5 | ||||
| 6 | ||||
| 7 | ||||
| 8 | ||||
| 9 | ||||
| 10 | ||||
| 11 | ||||
| 12 | ||||
| 13 | ||||
| 14 | ||||
| 15 | ||||
| 16 | ||||
| 17 | ||||
| 18 | ||||
| 19 | ||||
| 20 |