Questão de Programação — Linguagens de programação — CESPE / CEBRASPE 2025
- Código
- ce222024
- Banca
- CESPE / CEBRASPE
- Órgão
- UNB
- Ano
- 2025
- Nível
- Médio
- Cargo
- Técnico em Tecnologia da Informação

- CCerto
- EErrado

GabaritoC — Certo
Gabarito: letra C (CERTO). A tentativa de criar a coluna status em df_aprovados não será bem-sucedida porque df_aprovados é uma fatia (slice) do DataFrame original, e o pandas emite o SettingWithCopyWarning para alertar sobre essa operação ambígua. O aviso não impede a execução, mas sinaliza que a modificação pode não funcionar como esperado, pois a fatia pode ser uma cópia ou uma visão (view) do DataFrame original.
O SettingWithCopyWarning é um dos avisos mais comuns e confusos para quem está começando com pandas. Ele ocorre quando você tenta modificar um DataFrame que foi criado a partir de uma operação de filtragem ou seleção, como df[df['nota'] >= 7]. O pandas não consegue determinar com certeza se essa fatia é uma visão (view) — que aponta para os mesmos dados do DataFrame original — ou uma cópia (copy) — que possui dados independentes. Essa ambiguidade é o que gera o aviso.
Na prática, o que acontece é o seguinte: quando você faz df_aprovados = df[df['nota'] >= 7], o pandas pode criar uma cópia dos dados ou uma visão, dependendo de fatores internos de otimização. Se for uma visão, a modificação df_aprovados['status'] = 'aprovado' pode até funcionar, mas pode também não propagar a alteração para o DataFrame original, ou pior, pode gerar um SettingWithCopyWarning que indica que a operação pode não ter efeito. Se for uma cópia, a modificação será feita apenas na cópia, e o DataFrame original permanecerá inalterado.
A forma correta de evitar esse problema é usar o método .copy() ao criar a fatia, garantindo que você está trabalhando com um DataFrame independente:
df_aprovados = df[df['nota'] >= 7].copy()
df_aprovados['status'] = 'aprovado'Ou, se a intenção é modificar o DataFrame original, deve-se usar .loc para fazer a atribuição diretamente:
df.loc[df['nota'] >= 7, 'status'] = 'aprovado'A banca explora exatamente essa confusão: o candidato pode pensar que o aviso impede a execução, mas na verdade ele é apenas um alerta. A questão afirma que a tentativa "não será bem-sucedida", o que é verdadeiro no sentido de que a operação pode não ter o efeito desejado (modificar o DataFrame original), e o aviso é o sintoma desse problema.
A banca quer que você confunda o SettingWithCopyWarning com um erro que impede a execução. Na verdade, ele é um aviso (warning), não uma exceção. O código executa, mas a modificação pode não ser persistida no DataFrame original, pois a fatia pode ser uma cópia. O termo "não será bem-sucedida" refere-se a essa falha silenciosa, não a um crash do programa.
A afirmação está correta. O SettingWithCopyWarning é emitido exatamente quando se tenta modificar uma fatia de um DataFrame, como df_aprovados = df[df['nota'] >= 7], e depois se faz uma atribuição como df_aprovados['status'] = 'aprovado'. O aviso indica que a operação pode não funcionar como esperado, pois a fatia pode ser uma cópia, e a modificação não será refletida no DataFrame original. Portanto, a tentativa de criar a coluna status não será bem-sucedida no sentido de que a alteração pode não ser persistida, e o aviso é o alerta para esse comportamento.
Gabarito: letra C (CERTO).
Link permanente: /questoes/ce222024