Como usar a função round() no Python?
Como Arredondar Números em Python
por David Amos, 03 de julho de 2023
Com muitas empresas recorrendo ao poderoso ecossistema de ciência de dados do Python para analisar seus dados, entender como evitar a introdução de viés em conjuntos de dados é absolutamente vital. Se você estudou um pouco de estatística, provavelmente está familiarizado com termos como viés de relatório, viés de seleção e viés de amostragem. Existe outro tipo de viés que desempenha um papel importante quando lidamos com dados numéricos: o viés de arredondamento.
Compreender como o arredondamento funciona em Python pode ajudar você a evitar o viés em seu conjunto de dados. Essa é uma habilidade importante, afinal, tirar conclusões de dados enviesados pode levar a erros custosos.
No tutorial a seguir, você aprenderá:
- Por que a forma como você arredonda os números é importante
- Como arredondar um número de acordo com várias estratégias de arredondamento
- Como implementar cada estratégia em Python puro
- Como o arredondamento afeta os dados e qual estratégia de arredondamento minimiza esse efeito
- Como arredondar números em arrays NumPy e DataFrames pandas
- Quando aplicar diferentes estratégias de arredondamento
Faça o Quiz: Teste seus conhecimentos com nosso quiz interativo “Arredondando Números em Python”. Ao terminar, você receberá uma pontuação para acompanhar seu progresso de aprendizado ao longo do tempo.
Não será um tratado sobre precisão numérica na computação, embora você toque brevemente no assunto. Apenas será necessária familiaridade com os fundamentos do Python, e a matemática deve parecer familiar se você estudou álgebra no ensino médio.
A Função round()
Embutida do Python
Python possui uma função embutida round()
que recebe dois argumentos numéricos, n
e ndigits
, e retorna o número n
arredondado para ndigits
. O argumento ndigits
tem 0 como valor padrão, então se você omiti-lo, o número será arredondado para um inteiro. Como verá, o round()
pode não funcionar exatamente como você espera.
A forma como a maioria das pessoas aprende a arredondar um número é mais ou menos assim:
-
Arredonde o número
n
comp
casas decimais primeiro movendo a vírgula emn
porp
casas. Para fazer isso, multipliquen
por 10ᵖ (10 elevado à potênciap
) para obter um novo número,m
. -
Em seguida, verifique o dígito
d
na primeira casa decimal dem
. Sed
for menor do que 5, arredondem
para baixo para o inteiro mais próximo. Caso contrário, arredondem
para cima. -
Por fim, mova a vírgula de volta
p
casas dividindom
por 10ᵖ.
É um algoritmo! Por exemplo, o número 2.5
arredondado para o inteiro mais próximo é 3
. O número 1.64
arredondado para uma casa decimal é 1.6
.
Agora abra uma sessão do interpretador e arredonde 2.5
para o inteiro mais próximo usando a função embutida round()
do Python:
Mas e se você quisesse arredondar para uma casa decimal? Ou para duas casas decimais? Basta passar o número desejado como o segundo argumento para round()
. Por exemplo, o código a seguir arredondará 2.555
para duas casas decimais:
O resultado será 2.56
. Note que, quando ocorre um empate no arredondamento para cima ou para baixo, a regra de arredondamento “meio para cima” é aplicada.
Vamos dar uma olhada mais detalhada nas diferentes estratégias de arredondamento em Python.
Estratégias Simples, Mas Com Viés de Arredondamento
Para começar, vamos explorar algumas estratégias comuns de arredondamento que podem levar a viés. Essas estratégias incluem truncamento (apenas remover as casas decimais), arredondar para cima (sempre aumentar o valor para o próximo inteiro) e arredondar para baixo (sempre diminuir o valor para o próximo inteiro).
Truncamento
O truncamento é a estratégia de arredondamento mais simples e direta. Para truncar um número decimal, você simplesmente remove todas as casas decimais, deixando apenas a parte inteira. Em Python, o truncamento pode ser realizado convertendo o número para um inteiro.
Veja um exemplo:
O resultado será 2
. Observe que o truncamento não considera o valor das casas decimais, simplesmente corta-as.
Arredondar para Cima
A estratégia de arredondamento para cima sempre aumenta o valor para o próximo inteiro, independentemente do valor das casas decimais. Em Python, você pode usar a função math.ceil()
do módulo math
para arredondar para cima.
Aqui está um exemplo:
O resultado será 3
. Mesmo que as casas decimais não sejam maiores do que 5, o número é arredondado para cima.
Arredondar para Baixo
A estratégia de arredondamento para baixo sempre diminui o valor para o próximo inteiro, independentemente do valor das casas decimais. Em Python, você pode usar a função math.floor()
do módulo math
para arredondar para baixo.
Veja este exemplo:
O resultado será 2
. Mais uma vez, o número é arredondado para baixo, independentemente do valor das casas decimais.
Agora que você entende as estratégias básicas de arredondamento com viés, vamos dar uma olhada em como lidar com esse viés e adotar melhores estratégias em Python.
Rounding Bias: O Viés de Arredondamento
Quando você arredonda um número, ocorre um viés intrínseco. Isso ocorre devido à natureza discreta dos números em um computador. Por exemplo, quando você tenta arredondar um número que tem um dígito repetido na parte decimal, pode haver várias maneiras de realizar o arredondamento.
Por exemplo, considere o número 2.5
. Da forma como aprendemos, o número 2.5
é arredondado para o inteiro mais próximo, que é 3
. No entanto, e se surgir um número como 2.25
? Deveríamos arredondar para 2
ou 3
? Afinal, 2.25
está mais próximo de 2
do que de 3
, mas também está mais próximo de 3
do que de 2
.
Esse é o viés de arredondamento. Dependendo da estratégia de arredondamento, você pode acabar com resultados diferentes.