1
resposta

[Dúvida] Função sorted()

No notebook CURSO DE ESTATÍSTICA - PARTE 1, item 1.2 Tipos de dados, quando executo o código:
sorted(dados['Anos de Estudo'].unique())
o Colab apresenta como saída:
[np.int64(1),
np.int64(2),
np.int64(3),
np.int64(4),
np.int64(5),
np.int64(6),
np.int64(7),
np.int64(8),
np.int64(9),
np.int64(10),
np.int64(11),
np.int64(12),
np.int64(13),
np.int64(14),
np.int64(15),
np.int64(16),
np.int64(17)]

diferente do saída da aula em que os valores aparecem ordenados e na mesma linha. Por qual motivo está ocorrendo diferença no resultado do código?

1 resposta

Olá, Nalnyr. Como vai?

Essa é uma excelente dúvida! Pode ficar tranquilo porque o seu código funcionou perfeitamente e os seus dados foram ordenados de forma totalmente correta.

Essa diferença que você notou entre a sua saída e o vídeo da aula não aconteceu por um erro seu, mas sim por conta de uma atualização recente nas bibliotecas do ecossistema Python (especialmente o Pandas e o NumPy) dentro do Google Colab.

Vou te explicar detalhadamente por que isso acontece e como deixar a saída visualmente idêntica à do professor:

O motivo da diferença (np.int64)

Nas versões mais antigas do Pandas (usadas quando o curso foi gravado), ao extrair os valores únicos com .unique(), o Python devolvia os números puramente mascarados como inteiros normais na exibição da lista (ex: [1, 2, 3...]).

Nas versões atuais, o ecossistema de Data Science passou a ser muito mais explícito sobre os tipos de dados na memória. Esse np.int64() que apareceu para você é apenas o jeito do Google Colab te avisar: "Olha, cada um desses números dentro da lista é um número inteiro de 64 bits processado nativamente pelo NumPy".

Como a lista ficou mais "comprida" textualmente por causa da palavra np.int64, o Google Colab automaticamente quebra a linha para cada item para facilitar a leitura vertical, em vez de esmagar tudo em uma única linha horizontal.

Como deixar a saída limpa e na mesma linha?

Se você quiser limpar esse visual para que ele exiba apenas os números puros e em uma única linha como na aula, existem duas formas muito simples:

Opção 1: Converter os valores para uma lista Python nativa

A função .tolist() do Pandas força os dados a perderem o "rótulo" do NumPy, voltando a ser inteiros comuns do Python.

sorted(dados['Anos de Estudo'].unique().tolist())

Saída: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]

Opção 2: Usar uma função de impressão simples

Se você envolver o seu código atual dentro de um print(), o Python vai omitir a representação técnica do tipo de dado e imprimirá a lista na horizontal:

print(sorted(dados['Anos de Estudo'].unique()))

Saída: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]

Ambas as abordagens resolvem a estética visual, mas saiba que para os cálculos estatísticos que você fará no restante do curso (média, mediana, modas), o formato np.int64 funciona exatamente da mesma maneira. Parabéns pela atenção aos mínimos detalhes do console!

Espero que possa ter lhe ajudado!