Spaces:
Runtime error
Runtime error
added dataframe to demo
Browse files- app.py +4 -1
- get_forecast.py +10 -5
app.py
CHANGED
@@ -21,12 +21,15 @@ with gr.Blocks() as demo:
|
|
21 |
periods = gr.Slider(minimum = 1, maximum = 12, step = 1, value = 3, label = 'Months')
|
22 |
percent_change = gr.Slider(minimum = -100, maximum = 100, step = 5, value = -5, label = '% Change vs Last Year')
|
23 |
|
24 |
-
|
|
|
|
|
25 |
|
26 |
serie.change(get_forecast, [serie, periods, percent_change], plot, queue=False)
|
27 |
periods.change(get_forecast, [serie, periods, percent_change], plot, queue=False)
|
28 |
percent_change.change(get_forecast, [serie, periods, percent_change], plot, queue=False)
|
29 |
plot.change(get_forecast, [serie, periods, percent_change], plot, queue=False)
|
|
|
30 |
demo.load(get_forecast, [serie, periods, percent_change], plot, queue=False)
|
31 |
|
32 |
demo.launch(debug = False)
|
|
|
21 |
periods = gr.Slider(minimum = 1, maximum = 12, step = 1, value = 3, label = 'Months')
|
22 |
percent_change = gr.Slider(minimum = -100, maximum = 100, step = 5, value = -5, label = '% Change vs Last Year')
|
23 |
|
24 |
+
with gr.Row():
|
25 |
+
dataframe = gr.Dataframe(label = 'Predicted values')
|
26 |
+
plot = gr.Plot()
|
27 |
|
28 |
serie.change(get_forecast, [serie, periods, percent_change], plot, queue=False)
|
29 |
periods.change(get_forecast, [serie, periods, percent_change], plot, queue=False)
|
30 |
percent_change.change(get_forecast, [serie, periods, percent_change], plot, queue=False)
|
31 |
plot.change(get_forecast, [serie, periods, percent_change], plot, queue=False)
|
32 |
+
dataframe.change(get_forecast, [serie, periods, percent_change], [plot, dataframe], queue=False)
|
33 |
demo.load(get_forecast, [serie, periods, percent_change], plot, queue=False)
|
34 |
|
35 |
demo.launch(debug = False)
|
get_forecast.py
CHANGED
@@ -27,20 +27,25 @@ def get_forecast(serie: str, periods, percent_change: int):
|
|
27 |
past_prices = history[history['ds'].isin(last_year_dates)]['precio_hl'].values
|
28 |
|
29 |
# generate new_prices
|
30 |
-
|
31 |
-
percent_change = percent_change / 100
|
32 |
-
|
33 |
new_prices = past_prices * (1 + percent_change)
|
34 |
-
|
35 |
future['precio_hl'] = new_prices
|
36 |
|
|
|
37 |
forecast = model.predict(future)
|
38 |
|
39 |
future_values = forecast[['ds', 'yhat']]
|
|
|
|
|
|
|
|
|
|
|
40 |
|
|
|
41 |
last_obs = history.iloc[-1:][['ds', 'y']].rename(columns = {'y': 'yhat'})
|
42 |
future_aux = pd.concat([last_obs, future_values])
|
43 |
|
|
|
44 |
fig = plt.figure()
|
45 |
#plt.plot(history['ds'], history['y'], label = 'Historic data', marker = '.', color = 'C0')
|
46 |
plt.plot(future_aux['ds'], future_aux['yhat'], label = 'Forecast', marker = '.', color = 'C1')
|
@@ -51,4 +56,4 @@ def get_forecast(serie: str, periods, percent_change: int):
|
|
51 |
plt.tight_layout()
|
52 |
plt.legend()
|
53 |
|
54 |
-
return fig
|
|
|
27 |
past_prices = history[history['ds'].isin(last_year_dates)]['precio_hl'].values
|
28 |
|
29 |
# generate new_prices
|
30 |
+
percent_change = percent_change / 100
|
|
|
|
|
31 |
new_prices = past_prices * (1 + percent_change)
|
|
|
32 |
future['precio_hl'] = new_prices
|
33 |
|
34 |
+
# prediction
|
35 |
forecast = model.predict(future)
|
36 |
|
37 |
future_values = forecast[['ds', 'yhat']]
|
38 |
+
|
39 |
+
# arrange dataframe
|
40 |
+
df_future = future_values.rename(columns = {'ds': 'Date', 'yhat': serie}).copy()
|
41 |
+
df_future['Date'] = df_future['Date'].apply(lambda x: x.date())
|
42 |
+
df_future[serie] = df_future[serie].apply(lambda x: round(x, 4))
|
43 |
|
44 |
+
# aux to plot
|
45 |
last_obs = history.iloc[-1:][['ds', 'y']].rename(columns = {'y': 'yhat'})
|
46 |
future_aux = pd.concat([last_obs, future_values])
|
47 |
|
48 |
+
# plot
|
49 |
fig = plt.figure()
|
50 |
#plt.plot(history['ds'], history['y'], label = 'Historic data', marker = '.', color = 'C0')
|
51 |
plt.plot(future_aux['ds'], future_aux['yhat'], label = 'Forecast', marker = '.', color = 'C1')
|
|
|
56 |
plt.tight_layout()
|
57 |
plt.legend()
|
58 |
|
59 |
+
return fig, df_future
|