9
respostas

Erro ao carregar a tabela de Indicadores no BI

Obtive o seguinte erro ao tentar carregar a tabela de indicadores da fundamentus:

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

9 respostas

Olá Emiliano, tudo bem com você?

O erro ImportError: lxml not found, please install it indica que a biblioteca lxml não está instalada no ambiente Python.

Para resolver esse problema, abra o prompt de comandos e execute:

pip install lxml

Após a instalação da biblioteca, tente carregar a tabela de indicadores novamente no Power BI.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

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

Obrigado pela resposta Rafael, porém fiz a importação da biblioteca e infelizmente não deu certo. O erro abaixo persiste...

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

Olá Emiliano!

Simulei novamente o seu erro em minha máquina e tive sucesso ao instalar a dependência do lxml.

Vou te pedir para seguir os seguintes passos:

  • Abra o prompt de comando do Windows:

    Imagem da barra de pesquisa do prompt de comandos

  • Na tela que se abrir, desinstale o lxml:

    pip uninstall lxml
    
  • Instale novamente o lxml e a versão utilizada do Pandas utilizada no curso:

    pip install lxml
    
    pip install pandas==1.3.5
    
  • Agora, volte ao Power BI, abra a tela de Script do Python e cole o seguinte código:

    # 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 ok e aguarde os dados serem carregados.

Tente seguir esse passo a passo e veja se obterá sucesso. Em caso de ainda sim o erro persistir, me diga qual versão do Python você está utilizando. Você descobre a versão digitando no prompt de comandos o seguinte python –-version.

Fico à disposição.

Fiz os passos sugeridos e obtive o mesmo erro de antes. Estou utilizando a versão do Python solicitada pelo treinamento 3.7.7.

Fico no aguardo de novas instruções.

Olá Emiliano!

Esses erros de ambiente nem sempre são corrigidos de primeira, isso é normal no dia a dia que tem trabalha com tecnologia, peço sua paciência para continuarmos tentando até chegar em uma solução.

Você possui o Anaconda em seu computador? Se sim, tem chances do Python que está sendo executado no Power BI ser o do Anaconda e não o geral da máquina e por isso o erro de reconhecimento do lxml ocorre.

Quando abrimos a tela do Power BI para inserir o Script, mostra qual Python está sendo executado, como mostro abaixo:

Imagem exibindo a janela de carregamento de dados usando script do python no PowerBi

Você consegue me mandar um print dessa tela onde mostra qual python está sendo executado no Power BI? Será uma tela similar a que mostrei acima.

Fico no aguardo e à disposição.

Opa, entendo o processo... faz parte. Abaixo segue o print.

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

Boa noite Emiliano!

Com a imagem deu para perceber que aparentemente você está utilizando um ambiente virtual para executar seu código e o Power BI está procurando o Python neste caminho.

Vamos fazer assim:

  • Abra o prompt de comando do Windows

  • Navegue até a pasta do projeto bulltrend digitando:

    cd "C:\Users\emili\OneDrive\Alura\Python e PowerBI Analisando dados mercado financeiro\bulltrend"
    
  • Ative o ambiente virtual:

    bt_dash\Scripts\activate
    
  • Se tudo ocorrer bem, aparecerá entre parênteses (bt_dash) no canto esquerdo do prompt.

  • Agora, é instalar a biblioteca:

    pip install lxml
    
  • Tente novamente importar a tabela de indicadores no Power BI.

Se der erro em algum passo, me mande imagens por favor.

Opa, Já havia feito este processo, porém tentei novamente. Segue print abaixo. Seguimos com o mesmo erro de sempre...

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

Olá Emiliano!

Seguiremos tentando. Vou te mostrar dois caminhos e se o erro ainda persistir, faremos o terceiro caminho, que é reinstalar o Python.

Primeiro caminho: Reinstalando a biblioteca

Embora a biblioteca esteja instalada no ambiente bt_dash, vamos tentar reinstalá-la para garantir sua integridade:

  • Ative o ambiente bt_dash

  • Faça:

    pip uninstall lxml
    
  • Depois:

    pip install lxml
    
  • Tente carregar a tabela no Power BI.

  • Se o erro persistir, vamos para o próximo caminho.

Segundo Caminho: Alterar o caminho do Python no Power BI

  • Na tela inicial do Power BI, clique em Opções e Configurações e em seguida em Opções:

    Imagem que mostra a tela de opções

  • Em Scripts do Python, na opção Diretórios base do Python detectados, selecione Outro e cole o caminho do Python Global do do seu computador, que geralmente fica em:

    C:\Users\SEUSUARIO\AppData\Local\Programs\Python\Python310
    

    Imagem que mostra a configuração do Python no Power BI

  • Clique em Ok

  • Abra o prompt de comando do Windows

  • Navegue até a pasta que está o Python. A mesma que colocamos no caminho do Power BI. Exemplo:

    cd "C:\Users\SEUSUARIO\AppData\Local\Programs\Python\Python310"
    
  • Agora, instale o lxml:

    python -m pip install lxml
    
  • Tente carregar a tabela no Power BI usando o código abaixo:

    # 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
    
  • Se o erro persistir, vamos para o próximo caminho.

Terceiro caminho: Desinstalando o Python

Este caminho é mais severo, mas, importante para resolver o problema se nada do que tentamos acima funcionar. Neste caso, recomendo que você desinstale o Python e comece todas as configurações do zero novamente. Recomendo utilizar a versão 3.10, o qual é uma versão estável e mais recente da ferramenta e funcional para o curso. Os arquivos Python e Power BI que você já tem no seu computador serão preservados e poderão ser acessados normalmente após a reinstalação.

Fico no aguardo e à disposição.