IvanStudent commited on
Commit
93a5668
·
1 Parent(s): 9f65c7c

Guardar mis cambios locales

Browse files
Files changed (1) hide show
  1. app.py +12 -10
app.py CHANGED
@@ -23,7 +23,7 @@ def parse_date(date_str):
23
  except ValueError:
24
  return None, None, "Date format should be 'Month-Year', e.g., 'January-2024'."
25
 
26
- def forecast_sales(uploaded_file, date_str, forecast_period=30):
27
  if uploaded_file is None:
28
  return "No file uploaded.", None, "Please upload a file."
29
 
@@ -34,13 +34,14 @@ def forecast_sales(uploaded_file, date_str, forecast_period=30):
34
  except Exception as e:
35
  return None, f"Failed to read the uploaded CSV file: {str(e)}", "Error reading file."
36
 
 
 
 
 
 
37
  df['Date'] = pd.to_datetime(df['Date'])
38
  df = df.rename(columns={'Date': 'ds', 'Sale': 'y'})
39
 
40
- start_date, end_date, error = parse_date(date_str)
41
- if error:
42
- return None, error, "Invalid date format."
43
-
44
  df_filtered = df[(df['ds'] >= start_date) & (df['ds'] <= end_date)]
45
 
46
  arima_model, error = load_model()
@@ -48,8 +49,8 @@ def forecast_sales(uploaded_file, date_str, forecast_period=30):
48
  return None, error, "Failed to load ARIMA model."
49
 
50
  try:
51
- forecast = arima_model.get_forecast(steps=forecast_period)
52
  forecast_index = pd.date_range(start=end_date, periods=forecast_period + 1, freq='D')[1:]
 
53
  forecast_df = pd.DataFrame({'Date': forecast_index, 'Sales Forecast': forecast.predicted_mean})
54
  except Exception as e:
55
  return None, f"Failed during forecasting: {str(e)}", "Forecasting failed."
@@ -62,7 +63,7 @@ def forecast_sales(uploaded_file, date_str, forecast_period=30):
62
  ax.set_ylabel('Sales')
63
  ax.set_title('Sales Forecasting with ARIMA')
64
  ax.legend()
65
- return fig, None, "File loaded and processed successfully."
66
  except Exception as e:
67
  return None, f"Failed to generate plot: {str(e)}", "Plotting failed."
68
 
@@ -71,14 +72,15 @@ def setup_interface():
71
  gr.Markdown("## MLCast v1.1 - Intelligent Sales Forecasting System")
72
  with gr.Row():
73
  file_input = gr.File(label="Upload your store data here (must contain Date and Sales)")
74
- date_input = gr.Textbox(label="Enter Month and Year (e.g., January-2024)")
 
75
  forecast_button = gr.Button("Forecast Sales")
76
  output_plot = gr.Plot()
77
  output_message = gr.Textbox(label="System Messages", visible=True)
78
  forecast_button.click(
79
  forecast_sales,
80
- inputs=[file_input, date_input],
81
- outputs=[output_plot, output_message]
82
  )
83
  return demo
84
 
 
23
  except ValueError:
24
  return None, None, "Date format should be 'Month-Year', e.g., 'January-2024'."
25
 
26
+ def forecast_sales(uploaded_file, start_date_str, end_date_str, forecast_period=30):
27
  if uploaded_file is None:
28
  return "No file uploaded.", None, "Please upload a file."
29
 
 
34
  except Exception as e:
35
  return None, f"Failed to read the uploaded CSV file: {str(e)}", "Error reading file."
36
 
37
+ start_date, _, error = parse_date(start_date_str)
38
+ _, end_date, error_end = parse_date(end_date_str)
39
+ if error or error_end:
40
+ return None, error or error_end, "Invalid date format."
41
+
42
  df['Date'] = pd.to_datetime(df['Date'])
43
  df = df.rename(columns={'Date': 'ds', 'Sale': 'y'})
44
 
 
 
 
 
45
  df_filtered = df[(df['ds'] >= start_date) & (df['ds'] <= end_date)]
46
 
47
  arima_model, error = load_model()
 
49
  return None, error, "Failed to load ARIMA model."
50
 
51
  try:
 
52
  forecast_index = pd.date_range(start=end_date, periods=forecast_period + 1, freq='D')[1:]
53
+ forecast = arima_model.get_forecast(steps=forecast_period)
54
  forecast_df = pd.DataFrame({'Date': forecast_index, 'Sales Forecast': forecast.predicted_mean})
55
  except Exception as e:
56
  return None, f"Failed during forecasting: {str(e)}", "Forecasting failed."
 
63
  ax.set_ylabel('Sales')
64
  ax.set_title('Sales Forecasting with ARIMA')
65
  ax.legend()
66
+ return None, fig, "File loaded and processed successfully."
67
  except Exception as e:
68
  return None, f"Failed to generate plot: {str(e)}", "Plotting failed."
69
 
 
72
  gr.Markdown("## MLCast v1.1 - Intelligent Sales Forecasting System")
73
  with gr.Row():
74
  file_input = gr.File(label="Upload your store data here (must contain Date and Sales)")
75
+ start_date_input = gr.Textbox(label="Start Date (e.g., January-2024)", placeholder="Enter Start Date")
76
+ end_date_input = gr.Textbox(label="End Date (e.g., January-2024)", placeholder="Enter End Date")
77
  forecast_button = gr.Button("Forecast Sales")
78
  output_plot = gr.Plot()
79
  output_message = gr.Textbox(label="System Messages", visible=True)
80
  forecast_button.click(
81
  forecast_sales,
82
+ inputs=[file_input, start_date_input, end_date_input],
83
+ outputs=[output_message, output_plot]
84
  )
85
  return demo
86