fschwartzer commited on
Commit
074db95
1 Parent(s): fb309c7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -8
app.py CHANGED
@@ -64,23 +64,41 @@ def calcular_fator_avaliacao(titulo, EC, PU):
64
  fator_avaliacao = max((4 * ec_pontuacao + 6 * PVU - 3 * PUB) / 100, VR)
65
  return fator_avaliacao
66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  def integrated_app(query, titulo, EC, PU):
68
- df = fetch_data_to_dataframe(query, 50, "mercadolibre")
69
- df = pd.concat([df, data_crawler], ignore_index=True)
70
- if df.empty:
 
71
  return "Nenhum dado encontrado. Tente uma consulta diferente.", pd.DataFrame()
72
 
73
- df = refinar_resultados(df)
74
- df_similares = filtrar_itens_similares(df, query)
75
 
76
  if df_similares.empty:
77
  return "Nenhum item similar encontrado.", pd.DataFrame()
78
  else:
79
- mean_price = df_similares['Price'].mean()
 
80
  fator_avaliacao = calcular_fator_avaliacao(titulo, EC, PU)
81
  valor_avaliacao = mean_price * fator_avaliacao
82
- return f"Valor Médio do Bem: R$ {mean_price:.2f}, Fator de Avaliação: {fator_avaliacao*100:.2f}%, Valor de Avaliação: R$ {valor_avaliacao:.2f}", df_similares
83
-
84
 
85
  titulos = bens_df['TITULO'].unique().tolist()
86
 
 
64
  fator_avaliacao = max((4 * ec_pontuacao + 6 * PVU - 3 * PUB) / 100, VR)
65
  return fator_avaliacao
66
 
67
+ def select_nearest_items(df, n=5):
68
+ median_price = df['Price'].median()
69
+ df['Distance'] = (df['Price'] - median_price).abs()
70
+ df_sorted = df.sort_values(by=['Distance', 'Marketplace']) # Sort by distance then by marketplace to diversify
71
+ selected_items = pd.DataFrame()
72
+
73
+ marketplaces_seen = set()
74
+ for _, row in df_sorted.iterrows():
75
+ if len(selected_items) >= n:
76
+ break
77
+ if row['Marketplace'] not in marketplaces_seen:
78
+ selected_items = selected_items.append(row, ignore_index=True)
79
+ marketplaces_seen.add(row['Marketplace'])
80
+
81
+ selected_items = selected_items.drop(columns=['Distance']) # Remove the temporary 'Distance' column
82
+ return selected_items
83
+
84
  def integrated_app(query, titulo, EC, PU):
85
+ df_mercadolibre = fetch_data_to_dataframe(query, 50, "mercadolibre")
86
+ df_combined = pd.concat([df_mercadolibre, data_crawler], ignore_index=True)
87
+
88
+ if df_combined.empty:
89
  return "Nenhum dado encontrado. Tente uma consulta diferente.", pd.DataFrame()
90
 
91
+ df_refined = refinar_resultados(df_combined)
92
+ df_similares = filtrar_itens_similares(df_refined, query)
93
 
94
  if df_similares.empty:
95
  return "Nenhum item similar encontrado.", pd.DataFrame()
96
  else:
97
+ df_nearest = select_nearest_items(df_similares)
98
+ mean_price = df_nearest['Price'].mean()
99
  fator_avaliacao = calcular_fator_avaliacao(titulo, EC, PU)
100
  valor_avaliacao = mean_price * fator_avaliacao
101
+ return f"Valor Médio do Bem: R$ {mean_price:.2f}, Fator de Avaliação: {fator_avaliacao*100:.2f}%, Valor de Avaliação: R$ {valor_avaliacao:.2f}", df_nearest
 
102
 
103
  titulos = bens_df['TITULO'].unique().tolist()
104