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
yfinanceepandas - 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
iloclocaliza 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:
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.
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:

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:
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).

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:
tabela_cotacoes_norm.plot()
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!


