2
respostas

[Dúvida] Erro ao exportar a tabela Indicadores

Olá,

estou tendo dificuldades em exportar a tabela Indicadores para o Power BI com Python, porém sem sucesso.

O código apenas roda e nada acontece no Power BI, conforme a imagem abaixo:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Antes de executar no PBI, testei os códigos tanto no Google Colab, quanto no VS Code, e notei que havia há a necessidade - segundo o primeiro modulo do curso - de atualizar a seguinte linha de código:

# Criando um df com algumas infos da carteira
ind = fundamentus.get_papel(carteira_fund)[['Setor', 'Cotacao', 'Min_52_sem', 'Max_52_sem', 'Valor_de_mercado',
                                            'Nro_Acoes', 'Patrim_Liq','Receita_Liquida_12m','Receita_Liquida_3m',
                                            'Lucro_Liquido_12m', 'Lucro_Liquido_3m']]

para:

ind = pd.concat([fundamentus.get_papel(papel)[['Setor', 'Cotacao', 'Min_52_sem', 'Max_52_sem', 'Valor_de_mercado',
                                               'Nro_Acoes', 'Patrim_Liq','Receita_Liquida_12m','Receita_Liquida_3m',
                                               'Lucro_Liquido_12m', 'Lucro_Liquido_3m']] for papel in carteira_fund])

Com isso, o código foi bem executado tanto no Colab, quanto no VS Code e no PBI rodou sem erros. Porém, ele não está carregando os dados.

Aqui está o arquivo requirements.txt:

pandas==2.2.2
numpy==1.26.4
matplotlib==3.5.3
seaborn==0.12.0
fundamentus==0.2.0
yfinance==0.1.87

Obs.: Estou utilizando o caminho especificado do Script conforme as aulas:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeNo mais, também estou utilizando o ambiente virtual com a versão do Python 3.12.0:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Olá, Igor, tudo bem?

Vi que você está utilizando a versão mais recente do Python (3.12.0). Recomendo tentar uma versão mais estável, como a 3.10, para evitar possíveis incompatibilidades. Também percebi que no seu requirements.txt há uma versão diferente do pandas. Realizei um teste com o Python 3.10 e as mesmas versões de pacotes indicadas no arquivo requirements.txt do curso, e tudo funcionou corretamente. Seguem os passos para você replicar:

  1. Desinstalar a versão atual do Python: Acesse o Painel de Controle do Windows e remova a versão atual do Python.
  2. Instalar a versão 3.10: Faça o download da versão 3.10.10 através deste link.
  3. Instalação: Durante a instalação, não se esqueça de marcar a opção Add to Path na primeira tela.
  4. Configurar o ambiente: Baixe o arquivo requirements.txt e insira-o na pasta bulltrend.
  5. Instalar dependências: Abra o prompt de comando e execute o seguinte comando para instalar as dependências:
    pip install -r requirements.txt
    

Depois de instalar tudo, abra o Power BI, vá em Obter Dados e, na guia Outro, selecione Script do Python. Primeiro, cole o código referente a tabela cotações, você encontra da transcrição da aula Obtendo os dados de cotações, e por fim, o código referente a tabela indicadores:

# Importando as bibliotecas
import fundamentus
import pandas as pd

# Definindo a carteira de ações
carteira_fund = ["ABEV3", "B3SA3", "ELET3", "GGBR4", "ITSA4",
                 "PETR4", "RENT3", "SUZB3", "VALE3", "WEGE3"]

# Criando um df com algumas infos da carteira
ind = fundamentus.get_papel(carteira_fund)[['Setor', 'Cotacao', 'Min_52_sem', 'Max_52_sem', 'Valor_de_mercado',
                                            'Nro_Acoes', 'Patrim_Liq','Receita_Liquida_12m','Receita_Liquida_3m',
                                            'Lucro_Liquido_12m', 'Lucro_Liquido_3m']]
# Passando o ticker para uma coluna
ind = ind.reset_index()
ind.rename(columns = {'index':'Ativo'}, inplace=True)

# Alterando colunas object para numeric
colunas = ['Cotacao', 'Min_52_sem', 'Max_52_sem', 'Valor_de_mercado', 'Nro_Acoes', 'Patrim_Liq',
           'Receita_Liquida_12m', 'Receita_Liquida_3m', 'Lucro_Liquido_12m', 'Lucro_Liquido_3m']
ind[colunas] = ind[colunas].apply(pd.to_numeric, errors='coerce', axis=1)

# Criando um novo df com alguns indicadores da carteira
ind_2 = fundamentus.get_resultado_raw().reset_index()
ind_2 = ind_2.query("papel in @carteira_fund")
ind_2 = ind_2[['papel','P/L', 'Div.Yield','P/VP','ROE']].reset_index(drop=True)
ind_2.rename(columns={'papel': 'Ativo','Div.Yield':'DY'}, inplace= True)

# Concatenando os dfs em um só com as infos e indicadores
indicadores = pd.merge(ind, ind_2, on="Ativo")

# Criando uma coluna para LPA (Lucro por Ação) e VPA (Valor Patrimonial por ação)
# para calcular a fórmula de Graham  Valor intrínseco de uma ação (VI = √22,5 x LPA x VPA)
indicadores["LPA"] = (indicadores["Lucro_Liquido_12m"] / indicadores["Nro_Acoes"]).round(2)
indicadores["VPA"] = (indicadores["Patrim_Liq"] / indicadores["Nro_Acoes"]).round(2)

del ind, ind_2, carteira_fund, colunas
  • Clique em conectar

Este processo pode demorar um pouco mais para carregar, espere.

Feito isso a tabela será carregada.

Espero ter ajudado.

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá, Monalisa. Como vai?

Excelente!

Eu fiz de outra maneira, exportei as duas bases de dados distintas e utilizei o merge no PBI.

Ou seja, exportei o dataset de info dos ativos e dos indicadores separadamente para no final utilizar o merge.

Deu certo, mas para gerar o gráfico de vela por exemplo, deu alguns erros.