Update app.py
Browse files
app.py
CHANGED
|
@@ -42,11 +42,7 @@ def generar_tabla(n_filas, concentracion_inicial, unidad_medida, n_replicas):
|
|
| 42 |
for i in range(1, n_replicas + 1):
|
| 43 |
df[f"Concentraci贸n Real {i} ({unidad_medida})"] = None
|
| 44 |
|
| 45 |
-
#
|
| 46 |
-
df[f"Concentraci贸n Real Promedio ({unidad_medida})"] = None
|
| 47 |
-
if n_replicas > 1:
|
| 48 |
-
df[f"Desviaci贸n Est谩ndar ({unidad_medida})"] = None
|
| 49 |
-
|
| 50 |
return df
|
| 51 |
|
| 52 |
def ajustar_decimales_evento(df, decimales):
|
|
@@ -89,7 +85,7 @@ def generar_graficos(df_valid, n_replicas, unidad_medida):
|
|
| 89 |
# Convertir a num茅rico
|
| 90 |
df_valid[col_predicha_num] = df_valid[col_predicha_num].astype(float)
|
| 91 |
df_valid[col_real_promedio] = df_valid[col_real_promedio].astype(float)
|
| 92 |
-
df_valid[col_desviacion] = df_valid[col_desviacion].astype(float)
|
| 93 |
|
| 94 |
# Calcular regresi贸n lineal
|
| 95 |
slope, intercept, r_value, p_value, std_err = stats.linregress(df_valid[col_predicha_num], df_valid[col_real_promedio])
|
|
@@ -116,11 +112,9 @@ def generar_graficos(df_valid, n_replicas, unidad_medida):
|
|
| 116 |
label='Datos Reales'
|
| 117 |
)
|
| 118 |
else:
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
y=col_real_promedio,
|
| 123 |
-
ax=ax1,
|
| 124 |
color='blue',
|
| 125 |
s=100,
|
| 126 |
label='Datos Reales',
|
|
@@ -128,10 +122,9 @@ def generar_graficos(df_valid, n_replicas, unidad_medida):
|
|
| 128 |
)
|
| 129 |
|
| 130 |
# L铆nea de ajuste
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
ax=ax1,
|
| 135 |
color='green',
|
| 136 |
label='Ajuste Lineal',
|
| 137 |
linewidth=2
|
|
@@ -167,11 +160,9 @@ def generar_graficos(df_valid, n_replicas, unidad_medida):
|
|
| 167 |
|
| 168 |
# Gr谩fico de residuos
|
| 169 |
residuos = df_valid[col_real_promedio] - df_valid['Ajuste Lineal']
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
y=residuos,
|
| 174 |
-
ax=ax2,
|
| 175 |
color='purple',
|
| 176 |
s=100,
|
| 177 |
marker='D',
|
|
@@ -264,12 +255,12 @@ def actualizar_analisis(df, n_replicas, unidad_medida):
|
|
| 264 |
if df is None or df.empty:
|
| 265 |
return "Error en los datos", None, "No se pueden generar an谩lisis", df
|
| 266 |
|
|
|
|
|
|
|
|
|
|
| 267 |
col_predicha_num = "Concentraci贸n Predicha Num茅rica"
|
| 268 |
col_real_promedio = f"Concentraci贸n Real Promedio ({unidad_medida})"
|
| 269 |
|
| 270 |
-
# Calcular promedio y desviaci贸n est谩ndar
|
| 271 |
-
df = calcular_promedio_desviacion(df, n_replicas, unidad_medida)
|
| 272 |
-
|
| 273 |
# Convertir columnas a num茅rico
|
| 274 |
df[col_predicha_num] = pd.to_numeric(df[col_predicha_num], errors='coerce')
|
| 275 |
df[col_real_promedio] = pd.to_numeric(df[col_real_promedio], errors='coerce')
|
|
@@ -463,9 +454,6 @@ def generar_datos_sinteticos_evento(df, n_replicas, unidad_medida):
|
|
| 463 |
datos_sinteticos = np.round(datos_sinteticos, 2)
|
| 464 |
df[col_real] = datos_sinteticos
|
| 465 |
|
| 466 |
-
# Calcular promedio y desviaci贸n est谩ndar
|
| 467 |
-
df = calcular_promedio_desviacion(df, n_replicas, unidad_medida)
|
| 468 |
-
|
| 469 |
return df
|
| 470 |
|
| 471 |
def actualizar_tabla_evento(df, n_filas, concentracion, unidad, n_replicas):
|
|
@@ -483,9 +471,6 @@ def actualizar_tabla_evento(df, n_filas, concentracion, unidad, n_replicas):
|
|
| 483 |
if idx in df.index:
|
| 484 |
df_new.at[idx, col_new] = df.at[idx, col_old]
|
| 485 |
|
| 486 |
-
# Recalcular promedio y desviaci贸n est谩ndar
|
| 487 |
-
df_new = calcular_promedio_desviacion(df_new, n_replicas, unidad)
|
| 488 |
-
|
| 489 |
return df_new
|
| 490 |
|
| 491 |
# Interfaz Gradio
|
|
@@ -672,8 +657,6 @@ with gr.Blocks(theme=gr.themes.Soft()) as interfaz:
|
|
| 672 |
df = generar_tabla(7, 2000000, "UFC", n_replicas)
|
| 673 |
# Valores reales de ejemplo
|
| 674 |
df[f"Concentraci贸n Real 1 (UFC)"] = [2000000, 1600000, 1200000, 800000, 400000, 200000, 100000]
|
| 675 |
-
# Calcular promedio y desviaci贸n est谩ndar
|
| 676 |
-
df = calcular_promedio_desviacion(df, n_replicas, "UFC")
|
| 677 |
estado, fig, informe, df = actualizar_analisis(df, n_replicas, "UFC")
|
| 678 |
return (
|
| 679 |
2000000,
|
|
|
|
| 42 |
for i in range(1, n_replicas + 1):
|
| 43 |
df[f"Concentraci贸n Real {i} ({unidad_medida})"] = None
|
| 44 |
|
| 45 |
+
# Las columnas de promedio y desviaci贸n est谩ndar se agregar谩n durante el an谩lisis
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
return df
|
| 47 |
|
| 48 |
def ajustar_decimales_evento(df, decimales):
|
|
|
|
| 85 |
# Convertir a num茅rico
|
| 86 |
df_valid[col_predicha_num] = df_valid[col_predicha_num].astype(float)
|
| 87 |
df_valid[col_real_promedio] = df_valid[col_real_promedio].astype(float)
|
| 88 |
+
df_valid[col_desviacion] = df_valid[col_desviacion].fillna(0).astype(float)
|
| 89 |
|
| 90 |
# Calcular regresi贸n lineal
|
| 91 |
slope, intercept, r_value, p_value, std_err = stats.linregress(df_valid[col_predicha_num], df_valid[col_real_promedio])
|
|
|
|
| 112 |
label='Datos Reales'
|
| 113 |
)
|
| 114 |
else:
|
| 115 |
+
ax1.scatter(
|
| 116 |
+
df_valid[col_predicha_num],
|
| 117 |
+
df_valid[col_real_promedio],
|
|
|
|
|
|
|
| 118 |
color='blue',
|
| 119 |
s=100,
|
| 120 |
label='Datos Reales',
|
|
|
|
| 122 |
)
|
| 123 |
|
| 124 |
# L铆nea de ajuste
|
| 125 |
+
ax1.plot(
|
| 126 |
+
df_valid[col_predicha_num],
|
| 127 |
+
df_valid['Ajuste Lineal'],
|
|
|
|
| 128 |
color='green',
|
| 129 |
label='Ajuste Lineal',
|
| 130 |
linewidth=2
|
|
|
|
| 160 |
|
| 161 |
# Gr谩fico de residuos
|
| 162 |
residuos = df_valid[col_real_promedio] - df_valid['Ajuste Lineal']
|
| 163 |
+
ax2.scatter(
|
| 164 |
+
df_valid[col_predicha_num],
|
| 165 |
+
residuos,
|
|
|
|
|
|
|
| 166 |
color='purple',
|
| 167 |
s=100,
|
| 168 |
marker='D',
|
|
|
|
| 255 |
if df is None or df.empty:
|
| 256 |
return "Error en los datos", None, "No se pueden generar an谩lisis", df
|
| 257 |
|
| 258 |
+
# Calcular promedio y desviaci贸n est谩ndar dependiendo de las r茅plicas
|
| 259 |
+
df = calcular_promedio_desviacion(df, n_replicas, unidad_medida)
|
| 260 |
+
|
| 261 |
col_predicha_num = "Concentraci贸n Predicha Num茅rica"
|
| 262 |
col_real_promedio = f"Concentraci贸n Real Promedio ({unidad_medida})"
|
| 263 |
|
|
|
|
|
|
|
|
|
|
| 264 |
# Convertir columnas a num茅rico
|
| 265 |
df[col_predicha_num] = pd.to_numeric(df[col_predicha_num], errors='coerce')
|
| 266 |
df[col_real_promedio] = pd.to_numeric(df[col_real_promedio], errors='coerce')
|
|
|
|
| 454 |
datos_sinteticos = np.round(datos_sinteticos, 2)
|
| 455 |
df[col_real] = datos_sinteticos
|
| 456 |
|
|
|
|
|
|
|
|
|
|
| 457 |
return df
|
| 458 |
|
| 459 |
def actualizar_tabla_evento(df, n_filas, concentracion, unidad, n_replicas):
|
|
|
|
| 471 |
if idx in df.index:
|
| 472 |
df_new.at[idx, col_new] = df.at[idx, col_old]
|
| 473 |
|
|
|
|
|
|
|
|
|
|
| 474 |
return df_new
|
| 475 |
|
| 476 |
# Interfaz Gradio
|
|
|
|
| 657 |
df = generar_tabla(7, 2000000, "UFC", n_replicas)
|
| 658 |
# Valores reales de ejemplo
|
| 659 |
df[f"Concentraci贸n Real 1 (UFC)"] = [2000000, 1600000, 1200000, 800000, 400000, 200000, 100000]
|
|
|
|
|
|
|
| 660 |
estado, fig, informe, df = actualizar_analisis(df, n_replicas, "UFC")
|
| 661 |
return (
|
| 662 |
2000000,
|