Forum Discussion
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:
| fecha | tcv |
| 1/1/2013 | 2011131 |
| 2/1/2013 | 2053142 |
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
- Syndicate_AdminAdministrator
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 - Syndicate_AdminAdministrator
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_AdminAdministrator
He publicado el resultado de mi prueba. Por favor, compruebe si hay alguna diferencia.
Saludos
Helado