Ir para conteúdo
  • 0

Script Metodo ARIMA


Dbechelli

Pergunta

  • Alunos
Boa tarde pessoal, Seguindo as dicas do mestre Leo para uso da IA e Marchining Leaning, consegui chegar até um script Phyton para, utilizando o método ARIMA, calcular um valor futuro projetado: let Fonte = fMovimentacao, #"Outras Colunas Removidas" = Table.SelectColumns(Fonte,{"Data Vencimento", "Valor"}), #"Colunas Renomeadas" = Table.RenameColumns(#"Outras Colunas Removidas",{{"Data Vencimento", "Data"}, {"Valor", "Receitas"}}), #"Executar script Python" = Python.Execute("import pandas as pd#(lf)from statsmodels.tsa.arima.model import ARIMA#(lf)import datetime#(lf)import locale#(lf)#(lf)# Configurar o locale para o formato brasileiro#(lf)locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')#(lf)#(lf)# Importar os dados do Power BI#(lf)dados = <#null>Colunas Renomeadas""#(lf)# Definir a variável dependente#(lf)y = dados.set_index('Data')['Receitas']#(lf)#(lf)# Criar o modelo ARIMA#(lf)modelo = ARIMA(y, order=(1, 1, 1))#(lf)#(lf)# Ajustar o modelo aos dados#(lf)resultado = modelo.fit()#(lf)#(lf)# Fazer previsões para o número de meses definido pelo parâmetro do Power BI#(lf)previsoes = resultado.get_forecast(steps=6)#(lf)#(lf)# Converter as previsões em um DataFrame#(lf)df_previsoes = previsoes.predicted_mean.to_frame('Previsoes')#(lf)#(lf)# Formatar os números decimais no estilo brasileiro#(lf)df_previsoes['Previsoes'] = df_previsoes['Previsoes'].apply(lambda x: locale.format_string(""%.2f"", x))#(lf)#(lf)# Adicionar uma coluna de datas futuras ao DataFrame#(lf)df_previsoes.insert(1, 'Data', pd.date_range(start=datetime.datetime.now(), periods=6, freq='M'))#(lf)#(lf)# Retornar o DataFrame#(lf)df_previsoes#(lf)#(lf)",[dataset=#"Colunas Renomeadas"]) in #"Executar script Python" Ao Executar o Script, o Power BI apresenta o seguinte erro:
Imagem
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
Em 03/02/2024 em 15:05, Dbechelli disse:
Boa tarde pessoal, Seguindo as dicas do mestre Leo para uso da IA e Marchining Leaning, consegui chegar até um script Phyton para, utilizando o método ARIMA, calcular um valor futuro projetado: let Fonte = fMovimentacao, #"Outras Colunas Removidas" = Table.SelectColumns(Fonte,{"Data Vencimento", "Valor"}), #"Colunas Renomeadas" = Table.RenameColumns(#"Outras Colunas Removidas",{{"Data Vencimento", "Data"}, {"Valor", "Receitas"}}), #"Executar script Python" = Python.Execute("import pandas as pd#(lf)from statsmodels.tsa.arima.model import ARIMA#(lf)import datetime#(lf)import locale#(lf)#(lf)# Configurar o locale para o formato brasileiro#(lf)locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')#(lf)#(lf)# Importar os dados do Power BI#(lf)dados = <#null>Colunas Renomeadas""#(lf)# Definir a variável dependente#(lf)y = dados.set_index('Data')['Receitas']#(lf)#(lf)# Criar o modelo ARIMA#(lf)modelo = ARIMA(y, order=(1, 1, 1))#(lf)#(lf)# Ajustar o modelo aos dados#(lf)resultado = modelo.fit()#(lf)#(lf)# Fazer previsões para o número de meses definido pelo parâmetro do Power BI#(lf)previsoes = resultado.get_forecast(steps=6)#(lf)#(lf)# Converter as previsões em um DataFrame#(lf)df_previsoes = previsoes.predicted_mean.to_frame('Previsoes')#(lf)#(lf)# Formatar os números decimais no estilo brasileiro#(lf)df_previsoes['Previsoes'] = df_previsoes['Previsoes'].apply(lambda x: locale.format_string(""%.2f"", x))#(lf)#(lf)# Adicionar uma coluna de datas futuras ao DataFrame#(lf)df_previsoes.insert(1, 'Data', pd.date_range(start=datetime.datetime.now(), periods=6, freq='M'))#(lf)#(lf)# Retornar o DataFrame#(lf)df_previsoes#(lf)#(lf)",[dataset=#"Colunas Renomeadas"]) in #"Executar script Python" Ao Executar o Script, o Power BI apresenta o seguinte erro:
Imagem

Boa noite, estudando meu problema mais afundo, descobri que não é possível ter acesso direto a esta fonte pois sua origem é um site do SharePoint. Após pesquisas, consegui chegar em um script Python para se conectar a fonte no SharePoint, mas devido a autenticação de dois fatores (Microsoft Authenticator), não foi possível retornar o DF esperado para utilização do script acima. Alguma sugestão de como posso contornar o problema?

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Suave @Dbechelli?

Da uma olhada no video abaixo para ver como acessar um arquivo no SharePoint usando o Python:

 

Uma vez acessado, basta importar ele no dataframe do pandas e depois continuar com as outras manipulações do teu script.

Se essa resposta te ajudou, não esquece de marcar como melhor solução 😉

Abs!

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@Joao Raulinoobrigado por compartilhar o vídeo!
Foi por esse canal que consegui avançar com uso do Python para buscar arquivos no SharePoint.

O ponto é que ele ensina utilizando o método básico de autenticação (user / pass). Atualmente, o SharePoint exige o metodo de autenticação baseado em client_id, client_secret e token.

Sem isso, ele não permite a comunicação com os arquivos! ☹️

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa @Dbechelli!

Para autenticação com client_id, client_secret e token voce vai precisar registrar um App na Microsoft Azure:

Depois basta seguir a mesma logica que foi explicada no primeiro vídeo. Se precisar de um código exemplo, da uma olhada no artigo abaixo:

https://waragorn-boonpanya.medium.com/connecting-to-sharepoint-with-python-using-service-principal-663b4a34aaca

Isso é parte do caminho de aprendizado que vai te ajudar bastante a entender como se conectar a qualquer tipo de API (não só da Microsoft, mas também da Google, Amazon, Facebook...). Vale a pena fazer essa pratica 😉

Abs!

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Sim, inclusive foi por esse video que construi a primeira solução!

A questão é que meu sharepoint é corprativo, portanto previso de autenticação baseado em client_id e token.

Usando o Copilot, consegui as seguintes instruções:

 

Acesse o portal do Azure: Faça login no portal do Azure.

Selecione Azure Active Directory: No painel esquerdo, clique em “Azure Active Directory”.

Registre um novo aplicativo: Dentro do Azure Active Directory, clique em “Registros de aplicativo” e depois em “Novo registro”

  1. Preencha os detalhes do aplicativo:

    • Nome: Insira um nome para o aplicativo.
    • Tipo de conta com suporte: Selecione quem pode usar o aplicativo. Para a maioria dos cenários, você pode selecionar “Contas em qualquer diretório organizacional”.
    • URI de redirecionamento: Insira a URI de redirecionamento para o aplicativo. Para aplicativos de desktop, você pode usar https://login.microsoftonline.com/common/oauth2/nativeclient.
  2. Registre o aplicativo: Clique em “Registrar” para criar o aplicativo.

  3. Obtenha o ID do cliente e o segredo do cliente:

    • ID do cliente: Na página de visão geral do aplicativo, você encontrará o ID do cliente (também conhecido como ID do aplicativo). Anote este valor.
    • Segredo do cliente: No menu à esquerda, clique em “Certificados e segredos”. Em seguida, clique em “Novo segredo do cliente” para criar um novo segredo. Anote o valor do segredo.
  4. Configure as permissões do aplicativo: No menu à esquerda, clique em “API permissions”. Aqui, você pode adicionar permissões para várias APIs da Microsoft, como o Microsoft Graph.

Ajustei o código:
 

from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.files.file import File
import pandas as pd
import io

# Configuração
site_url = 'https://your-site.sharepoint.com/'
relative_url = '/Shared Documents/your-file.xlsx'
client_id = 'your-client-id'
client_secret = 'your-client-secret'
token_url = 'https://accounts.accesscontrol.windows.net/your-tenant-id/tokens/OAuth/2'

# Autenticação
auth_ctx = AuthenticationContext(token_url)
auth_ctx.acquire_token_for_app(client_id, client_secret)
ctx = ClientContext(site_url, auth_ctx)

# Baixar o arquivo
file_content = File.open_binary(ctx, relative_url)
df = pd.read_excel(io.BytesIO(file_content))

# Imprimir o DataFrame
print(df)

porem o token_url não está aceitando meu tenat criado no Azure

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
8 horas atrás, Joao Raulino disse:

Boa @Dbechelli!

Para autenticação com client_id, client_secret e token voce vai precisar registrar um App na Microsoft Azure:

Depois basta seguir a mesma logica que foi explicada no primeiro vídeo. Se precisar de um código exemplo, da uma olhada no artigo abaixo:

https://waragorn-boonpanya.medium.com/connecting-to-sharepoint-with-python-using-service-principal-663b4a34aaca

Isso é parte do caminho de aprendizado que vai te ajudar bastante a entender como se conectar a qualquer tipo de API (não só da Microsoft, mas também da Google, Amazon, Facebook...). Vale a pena fazer essa pratica 😉

Abs!

esse ainda não assiti! Obrigado!

  • Like 1
Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...