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,
|