Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
4 years ago

No se puede ejecutar correctamente el script de Python

Hola

Estoy tratando de ejecutar un script de Python que esencialmente realizará pronósticos de series de tiempo en mis datos de entrada.

Lo que quiero son los próximos 12 valores predichos.

Hice esto en jupyter pero no pude hacerlo en power bi ya que estoy obteniendo el mismo conjunto de datos en lugar de predicciones en power bi

¿Qué pasa?
El conjunto de datos tiene 110 registros. 2 registros pegados a continuación:

fechatcv
1/1/20132011131
2/1/20132053142

Mi código:

import numpy as np
import matplotlib.pyplot as plt
import pypyodbc  as pyodbc
import pandas as pd 
from statsmodels.tsa.arima_model import ARMA,ARMAResults,ARIMA,ARIMAResults
from statsmodels.graphics.tsaplots import plot_acf,plot_pacf # for determining (p,q) orders
from statsmodels.tsa.holtwinters import ExponentialSmoothing

SERVER_NAME = 'servername.its.corp.net'
DATABASE_NAME = 'GDB'


cnxn = pyodbc.connect(Driver='{SQL Server}', Server=SERVER_NAME , database=DATABASE_NAME,
                      trusted_connection='Yes')

cursor = cnxn.cursor()



sql_query = """
select  * from my_table
"""


# With Headers
df = pd.read_sql(sql_query, cnxn,index_col='date',parse_dates=True)
#index col is required to make sure stasmodel on this dataset we need to set index frequency
df.index.freq = 'MS'

method_TESmul12 = ExponentialSmoothing(df['tcv'],trend='mul',seasonal='mul',seasonal_periods=12).fit()
dataset = method_TESmul12.forecast(12)

3 Replies

  • Así que hice algunas modificaciones en el código y estoy obteniendo la salida ahora.

    Sin embargo, mi power bi y python muestran diferentes predicciones.

    Me pregunto dónde tengo que poner la semilla, si ese es el caso.

    Código nuevo

    import numpy as np
    import matplotlib.pyplot as plt
    import pypyodbc  as pyodbc
    import pandas as pd 
    from statsmodels.tsa.arima_model import ARMA,ARMAResults,ARIMA,ARIMAResults
    from statsmodels.graphics.tsaplots import plot_acf,plot_pacf # for determining (p,q) orders
    from statsmodels.tsa.holtwinters import ExponentialSmoothing
    
    SERVER_NAME = 'db.its.corp.net'
    DATABASE_NAME = 'GDB'
    
    
    cnxn = pyodbc.connect(Driver='{SQL Server}', Server=SERVER_NAME , database=DATABASE_NAME,
                          trusted_connection='Yes')
    
    cursor = cnxn.cursor()
    
    
    
    sql_query = """
    select * from my_table
    """
    
    
    # With Headers
    df = pd.read_sql(sql_query, cnxn,index_col='date',parse_dates=True)
    #index col is required to make sure stasmodel on this dataset we need to set index frequency
    df.index.freq = 'MS'
    
    method_TESmul12 = ExponentialSmoothing(df['tcv'],trend='mul',seasonal='mul',seasonal_periods=12).fit()
    range = pd.date_range('01-02-2022',periods=12,freq='MS')
    predictions = method_TESmul12.forecast(12).astype(int)
    predictions_range = pd.DataFrame({'Date':range, 'TCV':predictions})
    predictions_range
    
  • @klehar ,

    He probado con Python 3.10.2 y los resultados en Power BI y Python son los mismos.

    Aquí está la tabla que usé para probar.

    fecha tcv
    2013-01-01 2011131
    2013-02-01 2053142
    2013-03-01 2033123
    2013-04-01 2040222
    2013-05-01 2044113
    2013-06-01 2056333
    2013-07-01 2060245
    2013-08-01 2058756
    2013-09-01 2068524
    2013-10-01 2070555
    2013-11-01 2056700
    2013-12-01 2069322
    2014-01-01 2080246
    2014-02-01 2076623
    2014-03-01 2075456
    2014-04-01 2068456
    2014-05-01 2078123
    2014-06-01 2074235
    2014-07-01 2080654
    2014-08-01 2081456
    2014-09-01 2090231
    2014-10-01 2085165
    2014-11-01 2064897
    2014-12-01 2070542
    2015-01-01 2065894
    2015-02-01 2075698

    Saludos

    Helado

    Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Administrator

      @klehar ,

      He publicado el resultado de mi prueba. Por favor, compruebe si hay alguna diferencia.

      Saludos

      Helado