Normalización

import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler, StandardScaler

# ── Dataset ─────────────────────────────────────────────────────
datos = {
    'superficie':   [75, 95, 60, 120, 85, 50, 110, 70, 140, 65, 90, 100],
    'habitaciones': [3, 3, 2, 4, 3, 1, 4, 2, 5, 2, 3, 4],
    'banios':       [1, 2, 1, 2, 2, 1, 3, 1, 3, 1, 2, 2],
    'antiguedad':   [20, 10, 35, 5, 15, 40, 8, 25, 2, 30, 12, 7],
    'dist_centro':  [5.2, 3.8, 8.1, 2.1, 4.5, 9.0, 3.2, 6.7, 1.5, 7.4, 4.0, 2.8],
}
df = pd.DataFrame(datos)
cols = df.columns.tolist()

# ── Aplicar ambos métodos ────────────────────────────────────────
mm_scaler  = MinMaxScaler()
std_scaler = StandardScaler()

df_mm  = pd.DataFrame(mm_scaler.fit_transform(df),  columns=cols)
df_std = pd.DataFrame(std_scaler.fit_transform(df), columns=cols)

# ── Comparativa visual en consola ────────────────────────────────
separador = '─' * 65

print(separador)
print('ORIGINAL (valores sin normalizar)')
print(separador)
print(df.to_string(index=False))
print(f'  Min: {df.min().to_dict()}')
print(f'  Max: {df.max().to_dict()}')

print()
print(separador)
print('MIN-MAX SCALER (rango [0, 1])')
print(separador)
print(df_mm.round(3).to_string(index=False))
print(f'  Min: {df_mm.min().round(3).to_dict()}')
print(f'  Max: {df_mm.max().round(3).to_dict()}')

print()
print(separador)
print('STANDARD SCALER (media≈0, desv.típ.≈1)')
print(separador)
print(df_std.round(3).to_string(index=False))
print(f'  Medias:    {df_std.mean().round(4).to_dict()}')
print(f'  Desv.tip.: {df_std.std().round(3).to_dict()}')

# ── Tabla resumen por variable ───────────────────────────────────
print()
print(separador)
print('RESUMEN POR VARIABLE')
print(separador)
for col in cols:
    print(f'{col:>14} | original: [{df[col].min():.1f}, {df[col].max():.1f}]                    | min-max: [{df_mm[col].min():.3f}, {df_mm[col].max():.3f}]                    | z-score: [{df_std[col].min():.3f}, {df_std[col].max():.3f}]')

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos