diff --git a/ADRpy/analisis/Modulos/imputacion_correlacion/imputacion_correlacion.py b/ADRpy/analisis/Modulos/imputacion_correlacion/imputacion_correlacion.py index acafc82..d63cb42 100644 --- a/ADRpy/analisis/Modulos/imputacion_correlacion/imputacion_correlacion.py +++ b/ADRpy/analisis/Modulos/imputacion_correlacion/imputacion_correlacion.py @@ -375,19 +375,18 @@ def imputacion_correlacion(df, path: str = "ADRpy/analisis/Data/Datos_aeronaves. if not validos: # registra advertencias y NO imputa for m in descartados or [{"motivo": "Sin predictores válidos"}]: - for idx in faltantes: - reporte.append({ - "Fila": idx, - "Parametro": objetivo, - "Valor imputado": np.nan, - "Confianza": 0.0, - "Corr": 0.0, - "k": 0, - "Tipo Modelo": m.get("tipo", "n/a"), - "Predictores": ",".join(m.get("predictores", [])), - "Penalizacion_k": 0.0, - "Advertencia": f"Modelo descartado: {m['motivo']}", - }) + reporte.append({ + "Fila": idx, + "Parametro": objetivo, + "Valor imputado": np.nan, + "Confianza": 0.0, + "Corr": 0.0, + "k": 0, + "Tipo Modelo": m.get("tipo", "n/a"), + "Predictores": ",".join(m.get("predictores", [])), + "Penalizacion_k": 0.0, + "Advertencia": f"Modelo descartado: {m['motivo']}", + }) continue mejores = filtrar_mejores_modelos(validos) diff --git a/tests/test_imputacion_correlacion.py b/tests/test_imputacion_correlacion.py index a8d251b..f2f6cf9 100644 --- a/tests/test_imputacion_correlacion.py +++ b/tests/test_imputacion_correlacion.py @@ -1,19 +1,26 @@ -import sys import os - -# Agregar la carpeta raíz al sistema de rutas -sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../..'))) - -from ADRpy.analisis.Modulos.imputacion_correlacion.imputacion_correlacion import imputacion_correlacion +import tempfile import pandas as pd -from ADRpy.analisis.Modulos.imputacion_correlacion import imputacion_correlacion - +import numpy as np +from ADRpy.analisis.Modulos.imputacion_correlacion.imputacion_correlacion import imputacion_correlacion def test_imputacion_correlacion_basica(): df, reporte = imputacion_correlacion('ADRpy/analisis/Data/Datos_aeronaves.xlsx') - assert not df.isna().any().any(), "Deberia imputar todos los valores faltantes" - # Verificamos que el valor imputado para Potencia en la fila 2 sea cercano al calculo esperado - valor = df.loc[2, 'Potencia'] - assert round(valor, 3) == round(25.9691788448, 3) - assert 'Confianza' in reporte.columns -print("hola") \ No newline at end of file + assert not df.isna().any().any() + assert 'Confianza_cv' in reporte.columns + +def test_single_warning_per_missing_cell(): + data = pd.DataFrame({ + 'Modelo': ['a', 'b', 'c'], + 'Misión': [1, 1, 1], + 'X': [1, 1, 1], + 'Y': [np.nan, np.nan, 5], + }) + tmp = tempfile.mktemp(suffix='.xlsx') + with pd.ExcelWriter(tmp, engine='openpyxl') as writer: + data.to_excel(writer, sheet_name='data_frame_prueba', index=False) + try: + _, reporte = imputacion_correlacion(None, path=tmp) + assert len(reporte) == data['Y'].isna().sum() + finally: + os.remove(tmp)