import numpy as np
import pandas as pd
import seaborn as sns; sns.set()
import matplotlib.pyplot as plt
#import plotly
import fbprophet
from fbprophet import Prophet
# Read data from excel file
xlsx = pd.ExcelFile('VentaH.xlsx')
farma_csv = pd.read_excel(xlsx, 'datos')
farma = farma_csv
#Convert string to datetime data type
farma['Mes'] = pd.DatetimeIndex(farma['Mes'])
#Filters
#Select product AAA1 only
farmax = farma[farma['Material'].isin(['AAA1'])]
#Remove these two Clients
farmax = farmax[~farmax['Cliente'].isin(['Client11','Client12'] )]
#Sum and group by date
farmaxsum = farmax.groupby(['Fecha']).sum().reset_index()
#See statistics
farmaxsum.describe()
#Rename columns as required by Prophet
farmaxsum = farmaxsum.rename(columns={'Fecha': 'ds', 'unidades':'y'})
plt.figure(figsize=(20,5))
#plt.axvline(x=1000)
sns.lineplot(x="ds", y="y", estimator = 'mean' , data=farmaxsum)
#sns.lineplot(x=1)
import fbprophet
from fbprophet import Prophet
my_model = Prophet()
my_model.fit(farmaxsum)
future = my_model.make_future_dataframe(periods=24, freq='m')
m = Prophet(n_changepoints=10)
forecast = m.fit(farmaxsum).predict(future)
fig = m.plot(forecast)
#Plot Prophet's Forecast
from fbprophet.plot import plot
plot(my_model, forecast, figsize=(19, 7))
#Plot time serie's components
fig = my_model.plot_components(forecast)
#Exportar resultado a un archivo plano
forecast.to_csv('fcst.csv', decimal=',' , sep='\t', encoding='utf-8')