import pandas as pd from prophet import Prophet from pandas_datareader.stooq import StooqDailyReader from datetime import datetime #from fbprophet.plot import plot from dateutil.relativedelta import relativedelta import gradio as gr #from dateutil.easter import easter #from holidays import WEEKEND, HolidayBase pd.options.plotting.backend = "plotly" def get_forecast(stock): end = datetime.today() start = end -relativedelta(years=5) df = StooqDailyReader(stock, start=start, end=end) df_stock = df.read()['Close'] df = df_stock.reset_index().rename(columns={"Date":"ds","Close":"y"}) m = Prophet().fit(df) future = m.make_future_dataframe(periods=360, freq='D') fcst = m.predict(future) fig1 = m.plot(fcst) return fig1 with gr.Blocks() as demo: gr.Markdown( """ 日米インデックス株の予測をします。プルダウンから予測したいインデックスを選んでください。NKX:日経平均、TPX:トピックス、DJI:ダウ平均、NDQ:ナスダック、SPX:S&P500 """) with gr.Row(): stock = gr.Dropdown( ["^NKX","^TPX",'^DJI',"^NDQ","^SPX"], label="Stock", value="^NKX") plt = gr.Plot() stock.change(get_forecast, [stock], plt, queue=False) demo.load(get_forecast, [stock], plt, queue=False,title="Stock Predict") demo.launch()