A biblioteca Pandas é amplamente utilizada para manipulação e análise de dados em Python. Considere o trecho de código a seguir. import pandas as pd dados = {'Cidade': ['Boa Vista', 'Iracema', 'Amajari'], 'Categoria': ['A', 'B', 'A'], '2022': [320, 100, 50], '2023': [250, 50, 300], '2024': [300, 75, 100]} df = pd.DataFrame(dados, columns=['Cidade','Categoria','2022', '2023','2024']) print(df.groupby('Categoria')[['2022', '2023', '2024']].max().iloc[0,1]) O valor numérico exibido como saída ao comando print será
- A)300
Certa, porque `iloc[0,1]` acessa a primeira linha do resultado e a segunda coluna, que corresponde ao valor 300.
- B)50
Errada, pois 50 aparece na categoria `B` em `2023`, nao na posicao selecionada pelo `iloc`.
- C)320
Errada, porque 320 e o maximo da coluna `2022` para a categoria `A`, nao da celula pedida.
- D)250
Errada, porque 250 e um valor da categoria `A` em `2023`, mas nao e o maximo dessa coluna nem a posicao acessada.
- E)275
Errada, pois 275 nao aparece em nenhum ponto do DataFrame e nao pode ser resultado da operacao.
Gabarito: A
Quando voce usa groupby() no Pandas, primeiro os dados sao separados pela coluna escolhida e, depois, voce aplica a funcao de agregacao. Aqui, `df.groupby('Categoria')[['2022', '2023', '2024']].max()` vai calcular o maior valor de cada coluna numerica dentro de cada categoria (`A` e `B`). O resultado dessa operacao fica com as linhas das categorias e as colunas `2022`, `2023` e `2024`. Para a categoria `A`, os maximos sao 320, 300 e 300. Para a categoria `B`, os maximos sao 100, 50 e 75. Ate aqui, tudo certo e bem comportado. Depois vem o detalhe que costuma derrubar muita gente: `.iloc[0,1]` pega o elemento da primeira linha e da segunda coluna do DataFrame resultante. A primeira linha e a da categoria `A`, e a segunda coluna, entre `2022`, `2023` e `2024`, e a coluna `2023`. Logo, o valor exibido e 300. Ou seja, o gabarito A esta correto porque o codigo nao pega o maior valor geral, nem o da primeira coluna, nem o da ultima linha. Ele pega exatamente a celula na posicao [0,1] depois do `groupby` com `max`.