🧙‍♂️ El laboratorio de correlaciones

Con el Profesor Correlación (más de 30 años haciendo bailar números) · Carga CSV/Excel en Python y domina Pearson, Spearman y Kendall

🐍 Google Colab · pandas · scipy

📦 Abriendo los cofres: CSV y Excel

En Python, pandas es la llave maestra. Aquí todas las variaciones para que nada te tome por sorpresa.

🧳 Cofre CSV


import pandas as pd

# Básico
df = pd.read_csv('datos.csv')

# Con separador punto y coma
df = pd.read_csv('datos.csv', sep=';')

# Sin encabezados
df = pd.read_csv('datos.csv', header=None, names=['edad','altura'])

# Codificación especial
df = pd.read_csv('datos.csv', encoding='latin1')

# Índice desde columna
df = pd.read_csv('datos.csv', index_col=0)

# Saltar filas iniciales
df = pd.read_csv('datos.csv', skiprows=3)

# Solo ciertas columnas
df = pd.read_csv('datos.csv', usecols=['nombre','puntaje'])
      

📊 Cofre Excel


# Hoja por nombre o posición
df = pd.read_excel('ventas.xlsx', sheet_name='Pociones')
df = pd.read_excel('ventas.xlsx', sheet_name=0)

# Varias hojas a la vez
hojas = pd.read_excel('ventas.xlsx', sheet_name=['Hoja1','Hoja2'])

# Saltar filas decorativas
df = pd.read_excel('ventas.xlsx', skiprows=2)

# Elegir columnas por letra o nombre
df = pd.read_excel('ventas.xlsx', usecols='A,C,E:G')
      

💡 En Google Colab usa files.upload(), monta Google Drive o lee directamente desde una URL.

🕺 Los tres bailarines de la correlación

🥇 Pearson

El vals clásico. Mide relación lineal. Supone normalidad.

$$ r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}} $$

🥈 Spearman

La salsa. Trabaja con rangos. Captura relaciones monótonas.

$$ r_s = 1 - \frac{6 \sum d_i^2}{n(n^2 - 1)} $$

🥉 Kendall

El tango elegante. Compara pares concordantes/discordantes.

$$ \tau = \frac{C - D}{\frac12 n(n-1)} $$

En Python los invocamos con from scipy.stats import pearsonr, spearmanr, kendalltau. Siempre obtienes coeficiente y p-valor.

🚀 3 Misiones en Google Colab

🎓 Notas de hechicería vs horas de estudio

Subimos notas.csv con columnas horas_estudio y nota_final. Calculamos las tres correlaciones.


from scipy.stats import pearsonr, spearmanr, kendalltau
x = df['horas_estudio']
y = df['nota_final']
r_p, p_p = pearsonr(x, y)
r_s, p_s = spearmanr(x, y)
r_k, p_k = kendalltau(x, y)
        

🎩 Pearson suele dominar aquí si la relación es lineal. Añade un estudiante “genio” (1 hora, nota 9.9) y observa cómo Spearman y Kendall se mantienen firmes.

🧙 Ventas mágicas (Excel con varias hojas)

Archivo ventas_magicas.xlsx, hoja Pociones. Saltamos 2 filas decorativas.


df = pd.read_excel('ventas_magicas.xlsx', sheet_name='Pociones', skiprows=2)
# Correlaciones entre Publicidad, Precio y Ventas
r_p, p_p = pearsonr(df['Publicidad'], df['Ventas'])
r_s, p_s = spearmanr(df['Publicidad'], df['Ventas'])
        

🔍 El mapa de calor con sns.heatmap revela todos los bailes a la vez.

🍦 Helados y temperatura (relación no lineal)

Datos con estacionalidad. La relación sube y luego se aplana.


# Cargar con parseo de fechas
df = pd.read_csv('helados.csv', parse_dates=['Fecha'])
r_pe, p_pe = pearsonr(df['Temperatura'], df['Ventas_helados'])
r_sp, p_sp = spearmanr(df['Temperatura'], df['Ventas_helados'])
r_ke, p_ke = kendalltau(df['Temperatura'], df['Ventas_helados'])
        

🏆 Aquí Spearman y Kendall suelen superar a Pearson porque la relación no es perfectamente recta.

🧪 Laboratorio interactivo de correlaciones

Introduce tus propios pares de números (separados por comas) y observa el baile en tiempo real.