La idea
La correlación responde una pregunta estrecha: cuando una columna está por encima de su media, ¿la otra suele estar también por encima de la suya? Da la respuesta como un solo número, r, entre -1 y +1.
- Cerca de +1: suben juntas. Los productos más caros tienen costos más altos.
- Cerca de -1: una sube mientras la otra baja.
- Cerca de 0: saber una te dice poco de la otra, al menos en línea recta.
Eso es todo lo que dice. Describe el patrón en las filas que tienes. No dice por qué existe el patrón, si se mantendría al cambiar una columna a propósito, ni si es lo bastante grande como para importar.
Figura 1
Precio y costo: cuando uno es alto, el otro también
| product_id | unit_price | unit_cost |
|---|---|---|
| 102 | 919.00 | 503.50 |
| 103 | 789.00 | 429.87 |
| 104 | 429.00 | 214.70 |
| 105 | 449.00 | 232.70 |
| 106 | 229.00 | 79.35 |
- Cinco productos de Furniture, dos columnas numéricas. La correlación hace una sola pregunta: cuando
unit_priceestá por encima de la media, ¿unit_costtambién lo está? - El producto 102 tiene el precio más alto y el costo más alto. El 106 tiene el más bajo de ambos. Las dos columnas suben y bajan juntas.
- En los 111 productos que tienen costo,
df[['unit_price', 'unit_cost']].corr()da 0.98. Cerca de +1 significa que se mueven juntas casi en línea recta.
Por qué existe
A un analista le preguntan todo el tiempo "¿X va con Y?". ¿Más gasto en publicidad va con más
pedidos? ¿Un precio más alto va con menos unidades vendidas? ¿Las sesiones más largas van con más
compras? Leer filas para averiguarlo no funciona más allá de un puñado, y un gráfico de dispersión
no escala a 20 pares. El número de correlación comprime un par de columnas en un valor comparable,
así que corr() sobre un DataFrame entero ordena todos los pares a la vez.
Por eso la lección va después de los gráficos. Un diagrama de caja, un histograma y un regplot te muestran los datos, y el número de correlación los resume; usados juntos, cubren los puntos ciegos del otro.
También es donde los analistas afirman demasiado con más frecuencia. El número es tan limpio que pide citarse como una causa. Aprender qué respalda y qué no es la diferencia entre un hallazgo y un bochorno en la próxima reunión, cuando alguien pregunte "¿pero no podría ser la temporada?".
Cómo funciona por dentro
De columnas a un número
df.corr() estandariza cada columna (a cuántas desviaciones estándar de la media está cada valor) y
promedia los productos de los pares correspondientes. Cuando ambas están por encima de la media a la
vez, o por debajo a la vez, los productos son positivos y r sube. Cuando una es alta mientras la otra
es baja, los productos son negativos. El resultado es una matriz: cada columna numérica frente a
todas las demás, con 1.0 en la diagonal porque una columna coincide perfectamente consigo misma.
Un mapa de calor de seaborn, sns.heatmap(df.corr(), annot=True), pinta esa matriz para que
resalten las celdas fuertes. Léelo buscando las celdas oscuras fuera de la diagonal. La matriz es
simétrica, así que cada par aparece dos veces, y "los pares más fuertes" significa mirar un solo
triángulo. Un buen hábito es ordenar los pares por valor absoluto, porque -0.9 es tan fuerte como
+0.9.
Lo que r no mide
r mide la coincidencia en línea recta. Una relación que sube y luego baja puede tener una r cerca
de 0 y seguir siendo perfectamente clara en un gráfico. Por eso también dibujas el gráfico de
dispersión (sns.regplot): el número te dice cuánta fuerza, la imagen te dice qué forma.
También es sensible a los valores atípicos. Un solo punto extremo puede subir o bajar r, porque el valor extremo aporta un producto grande. Encuentra primero los atípicos, con la regla del IQR o un diagrama de caja, y luego decide si el punto pertenece a la historia.
Por qué una r fuerte aún puede engañar
Toma 2025 por mes. El gasto en publicidad y los pedidos tienen r = 0.95.
Hay al menos tres explicaciones para un número así. El gasto puede causar pedidos. Los pedidos pueden causar gasto, por ejemplo un presupuesto que sigue a los ingresos. O algo más, aquí la temporada navideña, puede elevar ambos. La correlación es la misma en los tres casos. Para distinguirlos necesitas un experimento (cambiar el gasto en unas regiones y no en otras), una comparación que mantenga fija la temporada, o saber cómo se fijó el presupuesto.
La pendiente ayuda con el tamaño. Una recta por los 12 puntos sube unos 14 pedidos por cada $1,000 más de gasto mensual. Eso es una descripción de los meses de los datos. Extenderla a un presupuesto duplicado va más allá de los datos que tienes.
Escribir la conclusión
Un análisis que se detiene en el número está sin terminar. Un directivo necesita una frase sobre la que actuar, y la frase tiene una forma.
Figura 3
Una conclusión tiene cuatro partes
- Hallazgo lo que muestran los números
- Tamaño cuánto, en unidades que el lector conoce
- Y entonces qué hacer o revisar después
- Límite lo que los datos no pueden decir
- Di lo que encontraste, en una frase que un directivo pueda repetir: 'Los meses con más gasto en publicidad tuvieron más pedidos en 2025.'
- Di cuánto, calculado y no adivinado: correlación 0.95, unos 14 pedidos más por cada $1,000 más de gasto mensual.
- Di qué se sigue de ello: prueba un cambio de gasto en un mes tranquilo antes de dar por hecha la relación.
- Di lo que los datos no pueden mostrar: noviembre y diciembre elevan ambos, así que esto no prueba que el gasto cause pedidos.
Cada número debería calcularse con tus datos, no estimarse a ojo. El límite es parte del hallazgo: le dice al lector hasta dónde confiar en él, y te protege cuando alguien cita tu frase sin el contexto.
Errores comunes
"Una correlación de 0.95 significa que el gasto en publicidad causa el 95% de los pedidos"
r no es un porcentaje de nada. Elevada al cuadrado es la parte de la variación de una columna que describe una recta sobre la otra, cerca del 91% aquí, y sigue siendo una afirmación sobre patrones en las filas. La causa necesita evidencia aparte: un experimento, o una razón por la que fallan las otras explicaciones.
"Si r es casi cero, las columnas no están relacionadas"
Significa que no hay relación en línea recta. Una relación en forma de U puede esconderse tras r = 0. Mira siempre el gráfico de dispersión antes de decir "no hay relación", y comprueba si un grupo de filas cancela a otro, como los consumidores frente a los clientes de empresa.
"Una correlación fuerte en los totales se mantendrá en cada grupo"
Las correlaciones pueden cambiar de signo al dividir los datos. Dos columnas pueden moverse juntas en
toda la tienda y moverse en sentido contrario dentro de cada categoría o segmento, porque los grupos
están en niveles distintos. Si un par importa para una decisión, vuelve a calcularlo por grupo
(groupby y luego corr) antes de escribir la conclusión.
Ponte a prueba
Una pregunta. Al responderla, la lección queda marcada en el mapa; nunca bloquea un nivel.
No del todo. Una correlación describe lo que pasó, no lo que pasaría si cambiaras una columna. Noviembre y diciembre elevan ambas, y el número no puede separar eso de un efecto real del gasto.Prueba otra respuesta.
No del todo. 0.95 no es una proporción de pedidos. Elevado al cuadrado da cerca de 0.91, la parte de la variación de una columna que describe una recta sobre la otra, y ni eso dice nada sobre la causa.Prueba otra respuesta.
Correcto. Esto es lo que dice el número: las dos columnas se mueven juntas a lo largo de los meses. Ahí se detiene.
No del todo. Una correlación mide justamente cuánto se mueven juntas dos columnas en línea recta. 0.95 es una fuerte.Prueba otra respuesta.
Lección hecha: ya está marcada en el mapa.