Captando Dados e Gerando um Gráfico Sunburst Interativo de Índices Ibovespa|B3

Carlos Alfredo Oliveira de Lima
DEVPIRA
Published in
4 min readMay 20, 2021

Como todo iniciante em investimentos de ações na bolsa de valores por vezes sou corroído pela ansiedade, aquela de ficar toda hora olhando a variação do preço das poucas ações que comprei, ou de ficar procurando quais empresas estão listadas ou quais a melhores e etc. Como estudante de ciência de dados, não aguentando mais toda hora olhar o site da B3 em busca de setores e suas respectivas empresas me perguntei como eu poderia visualizar melhor tais setores e empresas além da tradicional tabela disponível. E me deparei com um tutorial bacaninha no YouTube, no canal Código Quant — Finanças Quantitativas. E resolvi detalhar o tutorial por escrito e comentado neste artigo, espero que se sintam motivados após fazerem o tutorial, assim como eu me senti. Vamos lá!

Captando dados de índices Ibovespa|B3 e gerando um gráfico Sunburst interativo

Neste tutorial faremos a captação de dados das empresas listadas no índice Ibovespa, vale citar que neste índice não constam todas as empresas listadas na bolsa, para mais conhecimento dos índices listados e futuras mudanças sobre qual índice deseja gerar o gráfico, consulte a seção de índices amplos da B3.

Iremos gerar nosso gráfico com base nos setores do índice IBOV, há outros índices e deixarei no final uma lista com os índices para que possam extrair dados de outros índices.

Criando o Ambiente para Captar os Dados

Captaremos os dados diretamente da B3 por web scraping. Vamos optar por não fazer o download do arquivo CSV, mas de captarmos ele diretamente no código fonte de página em questão. Usaremos a biblioteca Kora, para acessarmos o site da B3 e emularmos o browser através de código, pois os dados que buscamos não voltam em HTML mas em funções Javascript, podem conhecer mais sobre o Kora aqui.

Usaremos o Pandas para manipularmos e tratarmos os dados e o DataTable para melhorarmos a apresentação dos dados.

Como vamos acessar virtualmente a página da B3 emulando um browser, usaremos também o Sleep a fim de darmos tempo de ‘carregar’ toda a página em nosso código.

Criação da Função de Captação dos Dados

Captando os Dados do arquivo CSV através da Função

Agora executaremos nossa função passando como argumento o índice ‘ibov’, lembrando que há vários índices, e tais índices com as respectivas descrições estarão no final do tutorial.

Tratando os Dados da Coluna ‘Setores’ e dividindo ela em duas, ‘Setores’ e ‘SubSetores’

Note que na coluna ‘Setores’ há duas informações, por exemplo: ‘Bens Indls / Máqs e Equips’, vamos dividir esta coluna em duas, criando então a coluna ‘Setores’ e ‘SubSetores’ e fazer um tratamento para melhorar a definição das palavras usadas.

A seguir verificamos se há informações duplicadas porém apresentadas de formas diferentes

Então definimos uma função para tratamento das informações desejadas:

E por fim atualizamos os valores com os dados já tratados, note que a coluna ‘SubSetor’ estará por último.

Gerando o Gráfico Sunburst

Por fim, criaremos o gráfico do tipo Sunburst, utilizando a biblioteca Plotly.

Após o gráfico gerado, pode-se interagir com o gráfico, clicando em um setor, ou subsetor e o gráfico se auto adaptará para o setor/subsetor escolhido.

Anexo: Importando CSV com as opções de índices da B3

Neste anexo, importaremos os dados dos diversos índices disponíveis na B3, para gerar o gráfico do respectivo índice basta usar o código do índice escolhido, por exemplo ‘IFIX’ como parâmetro ao chamar a função:

busca_carteira_teorica

Para gerarmos a carteira, vamos usar um CSV, neste caso usaremos um CSV já baixado para entendermos a diferença de usar um CSV direto da fonte e um baixado anteriormente.

Primeiro precisamos montar o drive no Google Drive e após montado devemos indicar o caminho do arquivo CSV.
*OBS: É necessário revisar o caminho do arquivo em seu Google Drive

Conclusão

Enfim chegamos ao fim galera, como podem ver, é um gráfico extremamente interessante, porque a função não é mostrar informações, mas sim setorizar dados, o que pode ser muito útil se usado no lugar de tabelas.
Espero que tenham gostado, caso queiram fazer o download do arquivo .ipybn e executar em seu Google Colab podem fazer aqui.

Caso queiram fazer algum contato:

LinkedIn

GitHub

--

--

Carlos Alfredo Oliveira de Lima
DEVPIRA
Writer for

Graduando em Ciência de Dados, paulista, bem casado, investidor iniciante, amante da boa gastronomia, motivado pelo Blue, Jazz e Country e inspirado por Jesus.