6
respostas

Obtendo os dados de cotações

Ja estou a mais de dois dias parados neste modulo do curso, ja desistalei e instalei novamente o Python e nada da certo

Se coloco o mesmo codigo da aula sem alterar o codigo abaixo, da tabela vazia .

#Resetando os índices e renomenado a coluna dos ativos cotacoes = cotacoes.reset_index().rename(columns={'level_1': 'Ativo'}) !

Se altero para como esta abaixo da erro

#Resetando os índices e renomenado a coluna dos ativos cotacoes = cotacoes.reset_index().rename(columns={'Ticker': 'Ativo'})!

Fiz um teste para ver se o problema é no Script do Python ou no Power BI e o erro esta no script

import pandas as pd df = pd.DataFrame({'Coluna': [1, 2, 3]}) df

6 respostas

Ei, Helio! Tudo bem?

Agradeço por aguardar o nosso retorno.

Estava obtendo o mesmo erro que você e o motivo era o meu ambiente que não estava ativado antes de executar o Script. Sendo assim, peço por gentileza para testar da seguinte forma:

Ativando o ambiente bulltrend

  • Abra o prompt de comando
  • Crie a pasta bulltrend usando o comando mkdir bulltrend e aperte Enter.
  • Caso já tenha essa pasta, digite cd bulltrend para acessá-la.
  • Informe na pasta que utilizará a linguagem python com o comando: python -m venv bt_dashe aperte Enter.
  • Após isso, ative o ambiente: bt_dash\Scripts\Activate. Feito isso, vamos instalar as bibliotecas utilizadas no arquivo requirements.txt. Mas antes de executar o comando, adicione esse arquivo na pasta bulltrend.
  • Pronto, digite para instalar: pip install -r requirements.txt.

Para acompanhar esses passos com mais detalhes, você pode assistir a essa aula. Ambiente ativado, minimize o prompt de comando e vamos para o Power BI, habilitar o Script.

Terminal do Windows exibindo a criação e ativação de um ambiente virtual em Python chamado bt_dash, dentro da pasta bulltrend, seguida da instalação de dependências com o comando pip install -r requirements.txt.

Habilitando o Script Python

Agora, em Arquivo > Opções Configurações > Opções, define o diretório raiz do projeto em Scripts do Python direcionando para a pasta que fizemos nos passos anteriores. O passo a passo completo você pode encontra nesta aula.

Obtendo dados de cotações

E por fim, refaça os passos para Obter os dados, como mostrado nesta aula e cole exatamente o script disponibilizado na transcrição. Segue o código:

# Código completo da obtenção dos dados históricos das cotações da carteira de 01/08/2022 à 01/08/2023
# Importando a biblioteca
import yfinance as yf

# Definindo a carteira de ações
carteira_yf = ['ABEV3.SA', 'B3SA3.SA', 'ELET3.SA', 'GGBR4.SA', 'ITSA4.SA',
               'PETR4.SA', 'RENT3.SA', 'SUZB3.SA', 'VALE3.SA', 'WEGE3.SA']

# Carregando os dados da carteira
df = yf.download(carteira_yf, start="2022-08-01", end="2023-08-01")

# Passando os ativos para o multindex do df
cotacoes = df.stack(level=1)

# Resetando os índices e renomenado a coluna dos ativos
cotacoes = cotacoes.reset_index().rename(columns={'level_1': 'Ativo'})

# Organizando o df
cotacoes = cotacoes[["Date", "Open", "High", "Low", "Close", "Ativo"]]

del carteira_yf, df

Aguarde alguns segundos e a tabela aparecerá:

Tela do Power BI exibindo o Navegador com a tabela cotacoes selecionada, mostrando dados como Date, Open, High, Low, Close e Ativo, com valores em notação científica e datas a partir de 01/08/2022.

Espero que dê certo, Helio! E qualquer dúvida, conte conosco aqui no fórum.

Bons estudos e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!

Nathalia Boa tarde Todas as vezes que executei o código python no Power BI eu já o fazia ativando o Python via cmd . Mesmo assim refiz agora todo o processo como vc mencionou e mesmo assim esta dando o erro :

Detalhes: "ADO.NET: ΡУţнǿń śçгĭφţ ēґѓог. Failed to get ticker 'SUZB3.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. Failed to get ticker 'ITSA4.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details. Failed to get ticker 'PETR4.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

[ 0% ]Failed to get ticker 'RENT3.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

[********** 20% ] 2 of 10 completed [************** 30% ] 3 of 10 completedFailed to get ticker 'WEGE3.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

[******************* 40% ] 4 of 10 completedFailed to get ticker 'ELET3.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

[**********************50% ] 5 of 10 completedFailed to get ticker 'VALE3.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

[******************60% ] 6 of 10 completedFailed to get ticker 'B3SA3.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

[*************70% ] 7 of 10 completedFailed to get ticker 'ABEV3.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

[*********80% ] 8 of 10 completedFailed to get ticker 'GGBR4.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

[**90% ] 9 of 10 completed [100%] 10 of 10 completed

10 Failed downloads: ['PETR4.SA', 'RENT3.SA', 'WEGE3.SA', 'ELET3.SA', 'VALE3.SA', 'B3SA3.SA', 'ABEV3.SA', 'GGBR4.SA']: YFTzMissingError('possibly delisted; no timezone found') ['SUZB3.SA', 'ITSA4.SA']: CertificateVerifyError('Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.') C:\Users\helio.nascimento\PythonScriptWrapper_5d113ed2-0ef4-4a19-ad47-b616ba0b6188\PythonScriptWrapper.PY:25: FutureWarning: The previous implementation of stack is deprecated and will be removed in a future version of pandas. See the What's New notes for pandas 2.1.0 for details. Specify future_stack=True to adopt the new implementation and silence this warning. cotacoes = df.stack(level=1) KeyError: "['Ativo'] not in index" "

Ei,Helio! Obrigada por retornar.

O problema com yfinance está ligado com a verificação de certificados SSL, como podemos ver no link disponibilizado no erro. O Python quando não consegue validar o certificado de segurança do site Yahoo Finance, acaba retornando este erro.

Recomendo que faça o seguinte:

  • Abra o prompt de comando e instale o pacote certifi que fornce uma coleçã atualizada de certificados raiz confiáveis:
pip install certifi
  • Depois, execute o comando abaixo para encontrar o caminho do arquivo cacert.pem fornecido no passo anterior:
python -c "import certifi; print(certifi.where())"
  • No início do Script Python configure a variável de ambiente SSL_CERT_FILE para apontar para o arquivo cacert.pem:
import os
import certifi
os.environ['SSL_CERT_FILE'] = certifi.where()

Feito isso, efetue os passos para adicionar o script Python novamente para gerar a conexão e obter os dados da tabela.

Conte sempre com a gente aqui no fórum, Helio. Até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!

Bom dia Nathalia Refiz o processo e deu erro também .

Versão do Python CMD : ![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade ) ![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade ) Power BI ![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade ) Erro: ![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade ) **Código modificado **

Código completo da obtenção dos dados históricos das cotações da carteira de 01/08/2022 à 01/08/2023

Importando a biblioteca

import os import certifi os.environ['SSL_CERT_FILE'] = certifi.where() import yfinance as yf

Definindo a carteira de ações

carteira_yf = ['ABEV3.SA', 'B3SA3.SA', 'ELET3.SA', 'GGBR4.SA', 'ITSA4.SA', 'PETR4.SA', 'RENT3.SA', 'SUZB3.SA', 'VALE3.SA', 'WEGE3.SA']

Carregando os dados da carteira

df = yf.download(carteira_yf, start="2022-08-01", end="2023-08-01")

Passando os ativos para o multindex do df

cotacoes = df.stack(level=1)

Resetando os índices e renomenado a coluna dos ativos

cotacoes = cotacoes.reset_index().rename(columns={'level_1': 'Ativo'})

Organizando o df

cotacoes = cotacoes[["Date", "Open", "High", "Low", "Close", "Ativo"]]

del carteira_yf, df

Txt do Erro See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

[ 0% ]Failed to get ticker 'ITSA4.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

[********** 20% ] 2 of 10 completed [************** 30% ] 3 of 10 completedFailed to get ticker 'RENT3.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

[******************* 40% ] 4 of 10 completedFailed to get ticker 'WEGE3.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

[**********************50% ] 5 of 10 completedFailed to get ticker 'GGBR4.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

[******************60% ] 6 of 10 completedFailed to get ticker 'B3SA3.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

[*************70% ] 7 of 10 completedFailed to get ticker 'ELET3.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

[*********80% ] 8 of 10 completedFailed to get ticker 'SUZB3.SA' reason: Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.

[**90% ] 9 of 10 completed [100%] 10 of 10 completed

10 Failed downloads: ['ABEV3.SA', 'ITSA4.SA', 'RENT3.SA', 'WEGE3.SA', 'GGBR4.SA', 'B3SA3.SA', 'ELET3.SA', 'SUZB3.SA']: YFTzMissingError('possibly delisted; no timezone found') ['PETR4.SA', 'VALE3.SA']: CertificateVerifyError('Failed to perform, curl: (60) SSL certificate problem: self signed certificate in certificate chain. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.') C:\Users\helio.nascimento\PythonScriptWrapper_93926cde-a973-4aee-97be-893685cfaf2b\PythonScriptWrapper.PY:28: FutureWarning: The previous implementation of stack is deprecated and will be removed in a future version of pandas. See the What's New notes for pandas 2.1.0 for details. Specify future_stack=True to adopt the new implementation and silence this warning. cotacoes = df.stack(level=1) KeyError: "['Ativo'] not in index" "

Ei, Helio! Tudo bem?

Uma alternativa para continuar com os estudos é salvar a tabela de cotações com a extensão .csve a importar para o Power BI. Por exemplo:

  • Abra o Colab e execute o seguinte código que vai transformar a tabela em um arquivo .csv pronto para baixar:
import yfinance as yf
import pandas as pd

# Definindo a carteira de ações
carteira_yf = ['ABEV3.SA', 'B3SA3.SA', 'ELET3.SA', 'GGBR4.SA', 'ITSA4.SA',
               'PETR4.SA', 'RENT3.SA', 'SUZB3.SA', 'VALE3.SA', 'WEGE3.SA']

# Baixando os dados
df = yf.download(carteira_yf, start="2022-08-01", end="2023-08-01")

# Convertendo para formato longo (cada linha = 1 ativo em 1 data)
cotacoes = df.stack(level=1).reset_index()
cotacoes = cotacoes.reset_index().rename(columns={"Ticker": "Ativo"})
# Mantendo apenas colunas de interesse
cotacoes = cotacoes[['Date', 'Open', 'High', 'Low', 'Close', 'Ativo']]

# Salvando em CSV
cotacoes.to_csv("cotacoes_b3.csv", index=False)
  • Após rodar o código, no menu suspenso na lateral esquerda o arquivo aparecerá por lá, clique nos 3 pontinhos e faça o download.

A imagem mostra uma interface de software com uma lista de arquivos. Há uma opção de upload e dois itens destacados: "Analise seus arquivos" e "com código escrito pelo Gemini". Na lista, aparecem os arquivos ".config", "sample.data" e "cotacoes_b3.csv", com este último selecionado. A interface inclui ícones de pasta, lupa e outros botões, com uma barra de progresso visível.

  • Abra o Power BI, clique em Obter Dados e selecione **Texto/CSV.
  • Carregue os dados e pronto.
  • A tabela aparecerá.

A partir daí pode seguir com a aula com os dados da cotação.

Espero ter ajudado, bons estudos!

Bom dia Nathalia

Acredito esta ser uma forma alternativa para continuar o curso, porem não soluciona o problema , ja que para manter o dash atualizado vou ter que ficar rodando este código no colab e colocando este arquivo em uma pasta para o dash estar atualizado.

Acho que a proposta do curso seria conexão com python para a atualização ser automatica .

Abraços