IvanStudent commited on
Commit
558f9a2
ยท
1 Parent(s): e2c152c

Guardar mis cambios locales

Browse files
Files changed (1) hide show
  1. app.py +55 -1
app.py CHANGED
@@ -98,4 +98,58 @@ def upload_and_forecast(uploaded_file, period):
98
 
99
  future_n_periods = forecast_period
100
  future_fitted, confint = train_test_model.predict(X=df.iloc[-future_n_periods:, 1:], n_periods=future_n_periods, return_conf_int=True, freq='3D')
101
- future_index_of_fc = pd.date_range(df['Sales'].index[-1], periods=future)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
 
99
  future_n_periods = forecast_period
100
  future_fitted, confint = train_test_model.predict(X=df.iloc[-future_n_periods:, 1:], n_periods=future_n_periods, return_conf_int=True, freq='3D')
101
+ future_index_of_fc = pd.date_range(df['Sales'].index[-1], periods=future_n_periods, freq='3D')
102
+ future_fitted_series = pd.Series(future_fitted)
103
+ future_fitted_series.index = future_index_of_fc
104
+
105
+ # Calculate sales growth
106
+ future_sales_growth = sales_growth(df, future_fitted_series)
107
+
108
+ # Prepare merged data for chart plotting
109
+ merged_data = merge_forecast_data(df['Sales'], fitted_series, future_fitted_series)
110
+
111
+ # Plot the charts
112
+ fig_compare = go.Figure()
113
+ fig_compare.add_trace(go.Scatter(x=merged_data[merged_data.columns[0]], y=merged_data['Actual Sales'], mode='lines', name='Actual Sales'))
114
+ fig_compare.add_trace(go.Scatter(x=merged_data[merged_data.columns[0]], y=merged_data['Predicted Sales'], mode='lines', name='Predicted Sales', line=dict(color='#006400')))
115
+ fig_compare.update_layout(title='๐Ÿ“Š Historical Sales Data', xaxis_title='Date', yaxis_title='Sales')
116
+
117
+ fig_forecast = go.Figure()
118
+ fig_forecast.add_trace(go.Scatter(x=merged_data[merged_data.columns[0]], y=merged_data['Actual Sales'], mode='lines', name='Actual Sales'))
119
+ fig_forecast.add_trace(go.Scatter(x=merged_data[merged_data.columns[0]], y=merged_data['Forecasted Future Sales'], mode='lines', name='Future Forecasted Sales'))
120
+ fig_forecast.update_layout(title='๐Ÿ”ฎ Forecasted Sales Data', xaxis_title='Date', yaxis_title='Sales')
121
+
122
+ # Return the figures and growth data
123
+ return fig_compare, fig_forecast, future_sales_growth
124
+
125
+ # Create the sidebar (inputs) and main interface for outputs
126
+ def create_sidebar():
127
+ with gr.Column():
128
+ gr.Markdown("### ๐Ÿ“‚ Upload your sales data (CSV)")
129
+ uploaded_file = gr.File(label="Choose your file", elem_id="file-uploader")
130
+ gr.Markdown("### โณ Forecast Period (Days)")
131
+ period = gr.Slider(minimum=30, maximum=90, step=1, label="Forecast period (in days)")
132
+ return uploaded_file, period
133
+
134
+ # Create the sidebar and main interface
135
+ uploaded_file, period = create_sidebar()
136
+
137
+ # Gradio interface for output display (results shown below)
138
+ output_plots = [
139
+ gr.Plot(label="๐Ÿ“ˆ Historical vs Predicted Sales"),
140
+ gr.Plot(label="๐Ÿ”ฎ Forecasted Sales Data"),
141
+ gr.DataFrame(label="๐Ÿ“Š Sales Growth")
142
+ ]
143
+
144
+ # Create and launch the gradio interface
145
+ iface = gr.Interface(
146
+ fn=upload_and_forecast,
147
+ inputs=[uploaded_file, period],
148
+ outputs=output_plots,
149
+ live=True,
150
+ title="Sales Forecasting System โœจ",
151
+ description="Upload your sales data to start forecasting ๐Ÿš€",
152
+ css=open("styles.css", "r").read() # Load the external CSS file here
153
+ )
154
+
155
+ iface.launch()