C2MV commited on
Commit
d2a5333
verified
1 Parent(s): 67c6c59

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -31
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
- # A帽adir columnas para promedio y desviaci贸n est谩ndar si hay m谩s de una r茅plica
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
- sns.scatterplot(
120
- data=df_valid,
121
- x=col_predicha_num,
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
- sns.lineplot(
132
- x=df_valid[col_predicha_num],
133
- y=df_valid['Ajuste Lineal'],
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
- sns.scatterplot(
171
- data=df_valid,
172
- x=col_predicha_num,
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,