Normalizar Dados no Python – Normalizando Cotações de Ações

Aprenda o que é a normalização de dados, por que ela é tão importante e como você pode normalizar dados no Python. Aplique esse conhecimento ao comparar ações!

Normalizar dados no Python significa colocar valores em uma mesma escala para poder compará-los de forma justa. Ao comparar ações, por exemplo, divide-se cada cotação pela primeira do período, deixando todas começarem no mesmo ponto. Com Pandas, isso é feito em uma linha: df / df.iloc[0], revelando qual ativo rendeu mais no intervalo.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

O que você aprende neste vídeo

Resposta rápida: A aula ensina a normalizar dados no Python com pandas para comparar ativos em escalas diferentes, usando cotações de Itaú, Petrobras, Vale e Ibovespa em 2023. Você aprende a dividir cada coluna pela primeira linha com iloc[0], ler o resultado em base 1 como variação percentual e plotar o gráfico em que todos partem do mesmo ponto.

Neste vídeo (10 min):

  • 1:20 - Arquivo de partida: cotações de Itaú, Petrobras, Vale e Ibovespa de janeiro a junho de 2023, puxadas com yfinance e pandas
  • 2:20 - Por que o preço cru não responde qual ativo rendeu mais: Itaú de 20,82 a 24,44 contra Ibovespa de 106 mil a 118 mil pontos
  • 3:00 - O que é normalização: colocar todos os ativos na mesma base, partindo de 1, para comparar onde cada um termina
  • 4:35 - O método mais simples: dividir cada cotação pela cotação inicial do próprio ativo
  • 5:10 - Lendo o resultado: a primeira linha vira 1, e um valor de 1,002 significa alta de 0,2% sobre o início
  • 6:20 - Criando a tabela normalizada dividindo a tabela de cotações inteira pela primeira linha, df / df.iloc[0]
  • 7:05 - Como o iloc localiza linhas pela posição, começando do índice 0 e ignorando o cabeçalho
  • 8:05 - Comparação final: Petrobras sobe 56,7%, Itaú 17%, Ibovespa 11% e a Vale termina em 0,74, queda de cerca de 26%
  • 8:35 - Gráfico com .plot() na tabela normalizada, com todas as linhas saindo do 1
  • 9:05 - O mesmo gráfico com as cotações originais: o Ibovespa na casa dos 100 mil pontos achata as ações perto de zero

Trechos do vídeo:

  • Normalizar é colocar valores de escalas diferentes na mesma base, para que a comparação entre eles faça sentido
  • Dividir cada cotação pela cotação inicial faz todos os ativos partirem de 1; um valor final de 1,57 equivale a uma alta de 57% no período
  • No pandas, dividir a tabela inteira por df.iloc[0] divide cada coluna pelo primeiro valor dela, sem laço nenhum
  • Olhar só o preço final engana: o Ibovespa termina com o maior número porque também começou com o maior, e não porque rendeu mais
  • Dividir pelo valor inicial é o método mais simples de normalização; os outros métodos seguem a mesma ideia de pôr todos os números na mesma base

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Ícone PythonPython Impressionador

Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.

Começar agoraSeta para a direita
Fundo PythonTelas Python
Luz Python

Normalizar Dados no Python – Normalizando Cotações de Ações

Na aula de hoje eu vou te mostrar o que é normalização de dados, porque ela é importante e como você pode normalizar dados no Python.

Em resumo, a normalização de dados consiste em colocar todos os dados em uma mesma escala. Esse processo é extremamente útil quando queremos fazer comparações entre conjuntos de dados em escalas diferentes.

No contexto das cotações de ações, a normalização se torna uma ferramenta essencial para determinar o desempenho dos ativos. Às vezes, pode ser difícil identificar qual ação está performando melhor apenas olhando os dados brutos.

Nesta aula, vamos abordar de forma prática como você pode comparar o desempenho das ações depois de normalizar dados no Python. Além disso, vamos aprender a plotar essa normalização em um gráfico, permitindo uma análise visual mais eficiente e clara.

Para aproveitar ao máximo esta aula, é recomendado que você faça o download do material disponível, pois ele irá te guiar ao longo de todo o processo e auxiliará na assimilação do conteúdo.

Código Para Pegar Cotações do Yahoo Finance

No material disponível para download, você terá acesso a um código em Python que permite obter as cotações de ações do Yahoo Finance.

Python
import pandas as pd
import pandas_datareader.data as pdr
import yfinance

yfinance.pdr_override()

ativos = ["ITUB3.SA", "^BVSP", "VALE3.SA", "PETR3.SA"]

data_final = "2023-06-30"
data_inicial = "2023-01-01"

tabela_cotacoes = pdr.get_data_yahoo(ativos, data_inicial, data_final)["Adj Close"]
display(tabela_cotacoes)

Para garantir o funcionamento correto desse código, é necessário ter as bibliotecas listadas nele instaladas. Se você deseja aprender como construir um código como esse e obter cotações de ações do Yahoo Finance, recomendo acessar essa aula.

Ao executar o código, ele irá retornar uma tabela com as cotações desejadas:

Tabela com os ativos

Observação: Se você não estiver usando o Jupyter Notebook, você deverá exibir a tabela com um print em vez de um display.

Normalização de Dados

Vamos usar a tabela gerada acima como exemplo. Digamos que queremos comparar o desempenho desses quatro ativos durante o primeiro semestre de 2023.

Ao observar a tabela, fica difícil de analisar qual ativo teve o melhor e o pior retorno, uma vez que seus valores estão em escalas diferentes.

Para realizar uma análise mais precisa e comparar informações em escalas diferentes, é necessário realizar o processo de normalização dos dados. Isso significa ajustar todos os valores para uma mesma base.

Existem várias maneiras de fazer isso. Nesta aula, vamos aplicar o procedimento de colocar todos os valores em uma base 1. Em outras palavras, vamos ajustar o valor inicial de todos os ativos para 1 e os subsequentes serão calculados com base nesse valor.

Dessa forma, teremos o valor inicial de todos os ativos ajustado para 1 e os valores posteriores serão normalizados em relação a essa primeira linha. Ao final, poderemos comparar os valores normalizados dos quatro ativos. Essa técnica facilitará a comparação e análise dos dados.

Como Normalizar Dados no Python

Existem diversas abordagens para normalizar dados no Python. Eu vou mostrar para vocês uma das mais simples e diretas.

Basicamente, o que nosso código irá fazer para normalizar dados no Python será dividir o valor de cada linha das colunas dos ativos pelo primeiro valor de cada um. Dessa forma, estaremos transformando todos os valores iniciais em 1, pois estaremos dividindo o valor inicial por ele próprio.

Para realizar essa normalização de forma prática e rápida, podemos adicionar o seguinte código logo após o código que gera nossa tabela:

Codigo
tabela_cotacoes_norm = tabela_cotacoes / tabela_cotacoes.iloc[0]
display(tabela_cotacoes_norm)

Esse código cria uma nova variável chamada tabela_cotacoes_norm, que recebe a tabela original(tabela_cotacoes) dividida pela primeira linha da tabela (tabela_cotacoes.iloc[0]). Utilizamos a função iloc[0] do Pandas para obter o valor da primeira linha.

Ao fazer isso, o Pandas entende que queremos dividir cada linha de cada coluna pelo valor da primeira linha correspondente àquela coluna.

Em seguida, exibimos a tabela final com display(tabela_cotacoes_norm).

Tabela com os ativos normalizados em base 1

Agora, fica muito mais fácil visualizar os dados na tabela, uma vez que todos os valores estão normalizados e começam em 1. Podemos facilmente analisar o desempenho de cada ativo ao longo do semestre, comparando os valores entre eles.

Com essa normalização, podemos concluir que, no período analisado, a Petrobrás teve um melhor desempenho entre os quatro ativos, enquanto a Vale teve o pior desempenho.

E para melhorar ainda mais, é possível exibir essa tabela normalizada na forma de um gráfico. Para isso, basta executar o seguinte código:

Codigo
tabela_cotacoes_norm.plot()
Gráfico com os ativos normalizados

Com o gráfico, nossa análise fica ainda mais visual e intuitiva. Podemos ver claramente os momentos de queda e ascensão de cada ativo e compará-los ao longo de todo o período.

Perguntas frequentes

1. O que é normalização de dados?

Normalização é o processo de ajustar valores de diferentes escalas para uma faixa comum, permitindo compará-los de forma justa. Sem ela, um dado com números grandes dominaria a análise. Existem várias técnicas, como colocar tudo entre 0 e 1 (min-max) ou dividir pela primeira observação, muito usada para comparar séries temporais.

2. Por que normalizar dados é importante na análise?

Porque dados em escalas diferentes distorcem comparações e prejudicam modelos de machine learning, que podem dar peso excessivo às variáveis de valores maiores. Normalizar coloca tudo em igualdade de condições, torna gráficos mais legíveis e melhora o desempenho de algoritmos sensíveis à escala, como regressões e redes neurais. É um passo-chave na preparação dos dados.

3. Como normalizar dados no Python com Pandas?

Uma forma simples de normalizar uma coluna entre 0 e 1 é (df["col"] - df["col"].min()) / (df["col"].max() - df["col"].min()). Para comparar séries como cotações, divida cada valor pela primeira linha com df / df.iloc[0]. O scikit-learn também oferece o MinMaxScaler para normalizar várias colunas de uma vez.

4. Qual a diferença entre normalização e padronização?

A normalização geralmente coloca os dados em uma faixa fixa, como 0 a 1 (min-max). A padronização (ou z-score) reescala os dados para média 0 e desvio padrão 1, usando StandardScaler. A normalização é boa quando você quer limites definidos; a padronização, quando os dados têm distribuição próxima da normal e há outliers.

Conclusão – Normalizar Dados no Python

Nessa aula, você aprendeu como normalizar dados no Python, a importância desse processo e como fazer isso de forma rápida e prática, utilizando apenas algumas linhas de código.

Além disso, mostrei como exibir esses dados na forma de um gráfico, o que otimiza sua análise e comparação entre eles.

Agora, além de saber como obter cotações de ações, você também sabe como normalizar os dados dessas cotações no Python e obter uma análise ainda mais precisa do mercado financeiro.

E caso tenha interesse em aprofundar seus conhecimentos em análise de dados, recomendo que acesse nosso Minicurso Gratuito de Análise de Dados! É uma ótima oportunidade para expandir suas habilidades nesse campo.

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?