Ordenar e pegar os maiores
Os códigos desta página rodam no navegador, mas não sozinhos: clique em Run Code em cada bloco, de cima para baixo.
A ideia
A base WorldBank.xlsx vem em ordem alfabética de país. Para responder “quais são os países mais populosos?”, precisamos mudar a ordem das linhas segundo uma variável. Foi o primeiro problema da Aula 1, e ele tem uma lição que vale para quase todo o pandas: sort_values não altera a base original, ele devolve uma nova tabela. Se você não guardar o resultado em uma variável, a ordenação se perde.
O argumento by diz por qual coluna ordenar; sem ele, o pandas não sabe o que fazer e reclama. Com uma lista, by=['region', 'Population'], ordena pela primeira coluna e desempata pela segunda.
Há um segundo tipo de ordenação que aparece muito na parte de probabilidade: .value_counts() ordena a tabela da categoria mais frequente para a menos frequente. Para uma variável discreta, como o número de itens em não conformidade na vistoria do Detran (Aula 11), queremos a ordem dos valores 0, 1, 2, … Isso é ordenar pelo índice, com .sort_index(). É assim que a tabela de frequências fica pronta para ser comparada com uma distribuição de probabilidade.
No código
Tuvalu, Palau e Ilhas Marshall são os menos populosos. Mas a base continua em ordem alfabética, porque o resultado não foi guardado:
Agora sim: China, Índia, Estados Unidos, Indonésia e Brasil. Dá para encadear os passos em uma linha só, lendo da esquerda para a direita. Os parênteses por fora permitem quebrar a linha, um passo em cada linha:
Com duas colunas: região em ordem alfabética e, dentro de cada região, do mais populoso para o menos populoso.
E a ordenação pelo índice, com a vistoria do Detran da Aula 11:
A primeira tabela começa pelo 1 (o valor mais frequente); a segunda segue 0, 1, 2, 3, que é a ordem que faz sentido para comparar com o modelo binomial.
Armadilhas comuns
- Esquecer o
by.sort_values()sem dizer a coluna dámissing 1 required positional argument: 'by'. - Achar que a base mudou.
dados.sort_values(...)sozinho não alteradados. Guarde:ordenados = dados.sort_values(...). - Esquecer o
ascending=False. Para “os maiores”, a ordem precisa ser decrescente; senão você pega os menores. - Trocar a ordem de
headesort_values.dados.head(5).sort_values(...)ordena só as 5 primeiras linhas da base. Primeiro ordene, depois corte. value_countsfora de ordem. Para variável discreta, use.sort_index(). Para qualitativa ordinal (satisfação, escolaridade), defina a ordem compd.Categoricale usesort=False(veja Categorias e ordem).
Exercícios aqui na página
Complete os ______ e clique em Run Code: a correção aparece logo abaixo. Use Show Hint para uma dica e Show Solution para ver uma resolução. O Python roda no seu navegador; na primeira vez ele leva alguns segundos para carregar.
Exercício 1
Guarde em top3 uma lista com os nomes dos 3 países de maior área (surface), do maior para o menor.
O padrão do sort_values é do menor para o maior.
top3 = paises.sort_values(by='surface', ascending=False).head(3)['Country'].tolist()
top3Exercício 2
Faça a tabela de frequências relativas de SibSp (irmãos ou cônjuges a bordo) ordenada pelo valor 0, 1, 2, … É o formato que vira distribuição de probabilidade na Aula 8.
value_counts ordena pela frequência; os valores estão no índice.
fr_sibsp = titanic['SibSp'].value_counts(normalize=True).sort_index()
fr_sibspExercício 3
Qual é a região do país mais populoso? Rode a primeira linha e escreva o nome da região exatamente como aparece na base.
Copie o texto da coluna region, com o sublinhado.
print(paises.sort_values(by='Population', ascending=False).head(1)[['Country', 'region']])
regiao = paises.sort_values(by='Population', ascending=False).iloc[0]['region']
regiaoComandos e documentação oficial
formulário o comando está no formulário que você pode consultar na prova.
Pratique
As listas novas de revisão abrem no Google Colab (use Arquivo → Salvar uma cópia no Drive). As listas das aulas estão no Blackboard, na pasta de cada aula.
- Revisão A · Pandas passo a passo (com correção automática) nova (Parte 4)Abrir no ColabBaixar .ipynb
- Aula 01 · Atividade: manipular e filtrar um DataFrame (WorldBank) APS1 (Exercício 1 (os seis países mais ricos))Blackboard · notebooks da Aula 01
- Aula 03 · Exercícios: sentimento dos clientes e barras de chocolate (Exercício 5 (chocolates de 2008))Blackboard · notebooks da Aula 03