Questão de Programação — Linguagens de programação — CESPE / CEBRASPE 2025
- Código
- ce203945
- Banca
- CESPE / CEBRASPE
- Órgão
- FUB
- Ano
- 2025
- Nível
- Médio
- Cargo
- Técnico de 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 devido à ocorrência de SettingWithCopyWarning, pois df_aprovados é uma fatia (slice) do DataFrame original. O aviso é um alerta do pandas sobre operações encadeadas que podem operar sobre uma cópia em vez de uma visão, tornando a atribuição incerta.
O SettingWithCopyWarning é um dos avisos mais comuns e mal compreendidos do pandas. Ele surge 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]. Nesse caso, o pandas não tem garantia de que a variável resultante é uma visão (view) do DataFrame original ou uma cópia independente. Quando você tenta atribuir um valor a essa fatia, o pandas emite o aviso para alertar que a operação pode não ter o efeito desejado — ou seja, a coluna pode não ser criada no DataFrame que você espera, ou pode ser criada em uma cópia temporária que será descartada.
A raiz do problema está na cadeia de operações: primeiro você filtra o DataFrame original (df[df['nota'] > 7]), e depois tenta modificar o resultado (df_aprovados['status'] = 'aprovado'). O pandas não consegue determinar com certeza se df_aprovados é uma visão ou uma cópia, então ele emite o aviso. Para evitar esse problema, a prática recomendada é 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' # Sem aviso, pois é uma cópia explícitaÉ importante notar que o SettingWithCopyWarning é um aviso (warning), não um erro. O código pode até funcionar em alguns casos, mas o comportamento é indefinido e pode variar entre versões do pandas. Por isso, a afirmação da questão está correta: a tentativa de criar a coluna não será bem-sucedida de forma confiável, pois o aviso indica que a operação pode não ter efeito no DataFrame original.
A pegadinha aqui é que muitos candidatos confundem SettingWithCopyWarning com um erro de sintaxe ou de tipo. Na verdade, é um alerta de que a operação pode não funcionar como esperado devido à ambiguidade entre visão e cópia. A banca explora exatamente essa confusão: o candidato pode pensar que o código funciona perfeitamente, ignorando o aviso, ou pode achar que o aviso é apenas um detalhe sem importância. Mas a questão cobra o conhecimento técnico de que o aviso indica uma falha potencial na operação.
Guarde a distinção: visão (view) é uma referência aos dados originais, enquanto cópia (copy) é um novo objeto independente. Quando você modifica uma visão, o DataFrame original é alterado; quando modifica uma cópia, o original permanece intacto. O SettingWithCopyWarning surge justamente quando o pandas não sabe qual dos dois você está manipulando.
A afirmação está correta. df_aprovados é uma fatia do DataFrame original, criada por uma operação de filtragem. Ao tentar criar a coluna status nessa fatia, o pandas emite o SettingWithCopyWarning, indicando que a operação pode não ser bem-sucedida. Isso ocorre porque a fatia pode ser uma visão ou uma cópia, e o pandas não tem como garantir que a atribuição será refletida no DataFrame original. Portanto, a tentativa de criar a coluna não será bem-sucedida de forma confiável, exatamente como afirma o enunciado.
A alternativa E afirma que o item está errado, ou seja, que a tentativa de criar a coluna seria bem-sucedida. Isso é incorreto porque o SettingWithCopyWarning é um alerta real do pandas que indica uma operação potencialmente problemática. Embora o código possa funcionar em alguns casos, o comportamento não é garantido, e a prática recomendada é evitar essa operação. Portanto, a afirmação do enunciado está correta, e a alternativa E está errada.
Gabarito: letra C
Link permanente: /questoes/ce203945