gradio/demo/sales_projections/run.py

33 lines
1.1 KiB
Python
Raw Normal View History

2021-07-23 02:25:50 +08:00
import gradio as gr
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
def sales_projections(employee_data):
sales_data = employee_data.iloc[:, 1:4].astype("int").to_numpy()
2021-08-26 05:25:53 +08:00
regression_values = np.apply_along_axis(lambda row:
np.array(np.poly1d(np.polyfit([0,1,2], row, 2))), 0, sales_data)
2021-07-23 02:25:50 +08:00
projected_months = np.repeat(np.expand_dims(
np.arange(3,12), 0), len(sales_data), axis=0)
projected_values = np.array([
month * month * regression[0] + month * regression[1] + regression[2]
for month, regression in zip(projected_months, regression_values)])
plt.plot(projected_values.T)
plt.legend(employee_data["Name"])
return employee_data, plt.gcf(), regression_values
iface = gr.Interface(sales_projections,
gr.inputs.Dataframe(
headers=["Name", "Jan Sales", "Feb Sales", "Mar Sales"],
default=[["Jon", 12, 14, 18], ["Alice", 14, 17, 2], ["Sana", 8, 9.5, 12]]
),
[
"dataframe",
2021-08-26 05:25:53 +08:00
"plot",
2021-07-23 02:25:50 +08:00
"numpy"
],
description="Enter sales figures for employees to predict sales trajectory over year."
)
if __name__ == "__main__":
iface.launch()