Questão nº 45
Questão de Tecnologia da Informação · CESGRANRIO BB 01/2022 (nº 45)
Ao programar em Python com Pandas, é possível usar máscaras para selecionar linhas específicas, de acordo com um padrão.
Nesse cenário, analise o seguinte código:
import pandas as pd
data = {'x':[1,2,3], 'y':[3, 7, 11], 'z': [False, True, False]}
df = pd.DataFrame(data)
m = df['z'] == False
ef = df[m]
# a fazer
print(ff)
Ao executar esse código, deseja-se obter a seguinte saída:
x y
0 1 3
2 3 11
O fragmento de código que deve substituir o comentário # a fazer para obter a saída desejada é
- A`ff = ef['x','y']`
- B
ff = ef[] == 'x' or 'y' - C`ff = ef[['x','y']]` (alternativa correta)
- D`ff = ef.cols('x','y')`
- E`ff = ef.cols(['x','y'])`
Resposta comentada
Gabarito Alternativa C
Máscara é uma sequência de True/False que filtra as linhas do DataFrame. Quando você usa df[m], o Pandas devolve um novo DataFrame só com as linhas onde a máscara é True. Para selecionar colunas específicas desse resultado, você passa uma lista com os nomes das colunas dentro de colchetes duplos [['x','y']].
- (A) Incorreta:
ef['x','y']tenta acessar duas colunas como se fossem uma tupla, o que gera erro de sintaxe (o correto seriaef[['x','y']]). - (B) Incorreta:
ef[] == 'x' or 'y'é inválido sintaticamente e não seleciona colunas; além disso,ornão funciona assim para filtros. - (C) Correta:
ef[['x','y']]passa uma lista de nomes de colunas, que é a forma correta de selecionar múltiplas colunas no Pandas, retornando exatamente as colunasxeydas linhas filtradas. - (D) Incorreta:
ef.cols('x','y')não existe no Pandas;colsnão é um método de DataFrame. - (E) Incorreta:
ef.cols(['x','y'])também não existe; a seleção de colunas é feita com[], não com.cols().
Armadilha da banca: a pegadinha mais tentadora é a letra A, porque parece intuitivo separar colunas por vírgula (como em listas), mas no Pandas vírgula dentro de[]não funciona para colunas — precisa de lista[['x','y']].
Fonte: CESGRANRIO BB 01/2022 Escriturário - Agente de Tecnologia (Caderno Gabarito 1). Reproduzida para fins de estudo.