Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import pypistats | |
| from datetime import date | |
| from dateutil.relativedelta import relativedelta | |
| from darts import TimeSeries | |
| from darts.models import ExponentialSmoothing | |
| from matplotlib import pyplot | |
| import pandas as pd | |
| def get_forecast(lib, time): | |
| data = pypistats.overall(lib, total=True, format="pandas") | |
| data = data.groupby("category").get_group("with_mirrors").sort_values("date") | |
| start_date = date.today() - relativedelta(months=int(time.split(" ")[0])) | |
| df = data[(data["date"] > str(start_date))] | |
| df1 = df[["date", "downloads"]] | |
| df1["date"] = pd.to_datetime(df1["date"]) | |
| df1 = df1.set_index(["date"]) | |
| target = TimeSeries.from_dataframe(df1, freq="D") | |
| model = ExponentialSmoothing() | |
| model.fit(target) | |
| prediction = model.predict(90, num_samples=500) | |
| fig, axes = pyplot.subplots(figsize=(20, 12)) | |
| target.plot() | |
| prediction.plot() | |
| pyplot.legend() | |
| return fig | |
| with gr.Blocks() as demo: | |
| gr.Markdown( | |
| """ | |
| **Pypi Download Stats π with Darts Forecasting**: see live download stats for popular open-source libraries π€ along with a 3 month forecast using Darts. The [ source code for this Gradio demo is here](https://huggingface.co/spaces/ivelin/darts-demo/tree/main). | |
| """ | |
| ) | |
| with gr.Row(): | |
| lib = gr.Dropdown( | |
| ["pandas", "scikit-learn", "torch", "prophet", "darts"], | |
| label="Library", | |
| value="darts", | |
| ) | |
| time = gr.Dropdown( | |
| ["3 months", "6 months", "9 months", "12 months"], | |
| label="Downloads over the last...", | |
| value="12 months", | |
| ) | |
| plt = gr.Plot() | |
| lib.change(get_forecast, [lib, time], plt, queue=False) | |
| time.change(get_forecast, [lib, time], plt, queue=False) | |
| demo.load(get_forecast, [lib, time], plt, queue=False) | |
| demo.launch() |