Segui o passo a passo certo que o professor mostrou e ainda assim a tabela mostra que está vazia. Tentei outras sugestões aqui do fórum mas nenhuma delas funcionou
Segui o passo a passo certo que o professor mostrou e ainda assim a tabela mostra que está vazia. Tentei outras sugestões aqui do fórum mas nenhuma delas funcionou
Olá Ismael! Tudo bem?
Realmente! Atualmente utilizando a versão yfinance
do curso e o código da transcrição gera tabelas vazia. Obtive o mesmo comportamento, e no meu caso, consegui resolver após duas alterações principais no código e uma atualização na biblioteca yfinance
.
yfinance
Precisei atualizar o yfinance
para a versão 0.2.63. Com isso você deverá editar o arquivo no bloco de notasrequirements.txt
refletindo essa atualização. Ele ficará assim:
pandas==1.3.5
numpy==1.21.6
matplotlib==3.5.3
seaborn==0.12.0
fundamentus==0.2.0
yfinance==0.2.63
Atualize no cmd com o comando:
pip install -r requirements.txt
Utilizei a versão 3.10.11 do Python. Recomendo primeiro tentar com a versão que está instalada em seus sitema, caso obtenha algum erro de incompatibilidade entre versão do Python e biblioteca, recomendo utilizar essa mesma versão que utilizei Python 3.10.11. Lembre-se que você deverá estar com o seu ambiente virtual ativo.
Adicionei o parâmetro auto_adjust=False
Isso evita que o yfinance
ajuste os preços automaticamente (o que pode quebrar a estrutura dos dados com múltiplos ativos):
df = yf.download(carteira_yf, start="2022-08-01", end="2023-08-01", auto_adjust=False)
Renomeei a coluna do ticker após o empilhamento (stack
):
Troque level_1
por "Ticker"
:
cotacoes = cotacoes.reset_index().rename(columns={'Ticker': 'Ativo'})
Código completo:
# 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", auto_adjust=False)
# 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={'Ticker': 'Ativo'})
# Organizando o df
cotacoes = cotacoes[["Date", "Open", "High", "Low", "Close", "Ativo"]]
del carteira_yf, df
Peço que testa esses novos ajustes e veja se o problema é solucionado,
Espero ter ajudado.
Qualquer dúvida que surgir, compartilhe no fórum.
Abraços e bons estudos!