Pular para o conteúdo

Como usar a função round() no Python?

CodeMDD.io

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 com p casas decimais primeiro movendo a vírgula em n por p casas. Para fazer isso, multiplique n por 10ᵖ (10 elevado à potência p) para obter um novo número, m.

  • Em seguida, verifique o dígito d na primeira casa decimal de m. Se d for menor do que 5, arredonde m para baixo para o inteiro mais próximo. Caso contrário, arredonde m para cima.

  • Por fim, mova a vírgula de volta p casas dividindo m 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:

>>> round(2.5)

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:

>>> round(2.555, 2)

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:

>>> int(2.5)

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:

>>> import math
>>> math.ceil(2.1)

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:

>>> import math
>>> math.floor(2.9)

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.