2
respostas

Percentual

Como transformar a resposta desse código em porcentagem?

from scipy.stats import norm

media = 70
desvio_padrao = 5
Z = (85 - media) / desvio_padrao

norm.cdf(Z)
2 respostas

Olá, Glaucia! Como vai?

Você pode usar uma das três opções:

print(f'{round(norm.cdf(Z)*100,2)}%')
print('{:.2f}%'.format(norm.cdf(Z)*100))
print('%.2f' % (norm.cdf(Z)*100), '%', sep='')

A saída dessas três opções é 99.87%.

Caso queira a saída com 3 casas após a vírgula, você pode fazer:

print(f'{round(norm.cdf(Z)*100,3)}%')
print('{:.3f}%'.format(norm.cdf(Z)*100))
print('%.3f' % (norm.cdf(Z)*100), '%', sep='')

Saída: 99.865%

A resposta do Rosicley é bem completa. Basicamente essas são as três principais formas de realizar a formatação de um string.

A lógica é substituir o conteúdo dentro das chaves {..} por uma string, segundo as orientações passadas.

  1. Dois pontos (:) - eles indicam que haverá orientações sobre a formatação desejada.
  2. Ponto (.) - indica o número terá o separador decimal (python usa o separador americano, o ponto).
  3. Número de casas - depois do ponto podemos inserir um número que indicará quantas casas decimais desejamos ver.
  4. f - indica que desejamos ver um número real (float) como texto.

No entanto, como você deseja observar o valor em porcentagem, há uma alternativa mais 'pythonica'.

print('Probabilidade de {:.02%}'.format(norm.cdf(Z)))

Note que ao invés de usarmos o f, usamos o %. Desta forma o Python já transforma o valor decimal em porcentagem (0,2 → 20%). Por isso, não precismos multiplicar o resultado por 100 (norm.cdf(Z)*100).

Existe muito material sobre esse tema. E há casos mais complexos de formatação. Tem este artigo, em inglês, que aborda somente os dois últimos exemplos (não o influi o f'...'), mas ilustra direitinho a lógica.