# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

# #### import external libraries

import numpy as np
import pandas as pd
from sklearn import set_config
from sklearn import metrics
from statsmodels.tsa.arima.model import ARIMA
from sklearn.model_selection import train_test_split

# setup the directory
import sys
sys.path.append('../../')

# #### IPython extensions

# %load_ext autoreload
# %autoreload 2

# #### import internal libraries

from preprocess.utils import preprocess as ps
from preprocess.utils import visualizations as vs
from preprocess.utils import exploratory_analysis as EDA

# ## Constants

PATH_FILE = '../../data/datasets/'
FILE_NAME = 'Base_de_Datos.csv'

DROP_COLS = ['Year','Publisher']

# ## Data gathering

df = pd.read_csv(PATH_FILE + FILE_NAME)
df.head(n=2)


# ### First filter before splitting and preprocessing

def filter_dataframe(df, col, val):
    '''
    Filter dataframes per column and value
    '''
    col = df.columns[col]
    val = str(val)
    df = df.query(f"{col}==@val")
    return df


df_nintendo = filter_dataframe(df, col=1, val='Nintendo')
df_nintendo.head(n=8)

df_nintendo['Year'].value_counts()

df_nintendo.shape

# ## ARIMA

# #### Conclusions

# * Debido a que contamos con un dato puntual por cada año, no permite generar un pronóstico temporal anual, ya que requerimos al menos más de 2 valores por año para poder evaluar una tendencia y su respectivo costo matemático del modelo. 
# * De igual manera, pensando en otras estrategias como colapsar el pronóstico por cada 5 o 10 años, resulta no ser la mejor opción, ya que, tiene una tendencia totalmente y = x, lo que no muestra ninguna dispersión y por lo tanto no se cumplen los criterios fundamentales para establecer un modelo, el cuál es que la variable sea aleatoria. 

StarcoderdataJupyterScriptsDedupFiltered