Olá, Nicole. Tudo bem?
Parabéns por enfrentar o desafio prático do Pandas! Criar colunas e aplicar lógicas condicionais são tarefas fundamentais no dia a dia de um cientista ou analista de dados. O uso do método .apply() com funções lambda mostra que você já está captando conceitos bem legais de manipulação de dados.
Analisando o seu código, notei que os três primeiros blocos estão ótimos, mas a linha final do df.query() apresenta alguns pequenos detalhes de sintaxe e lógica que vão fazer o Python retornar um erro.
Para te ajudar a consolidar essa etapa e deixar o seu código rodando perfeitamente, preparei algumas correções e dicas importantes:
1. Corrigindo a Sintaxe do .query()
O método .query() do Pandas serve para filtrar linhas usando uma expressão de texto (String). Existem três pontos de atenção no seu comando atual:
- Uso das aspas: A expressão inteira deve ficar dentro de aspas. Se o nome da sua coluna tem espaços (como
'Aprovação final'), o Pandas exige que você a envolva com crases (`) dentro da string. - Lógica impossível: O operador
& significa "E". Da forma como está escrito, você está pedindo para o Pandas encontrar linhas onde o aluno esteja aprovado e reprovado ao mesmo tempo (True & False), o que resultará em uma tabela vazia. - Aspas sobrando: Havia uma aspa simples perdida no final da linha (
True').
Se o seu objetivo era filtrar apenas os alunos aprovados, a sintaxe correta é:
df.query("`Aprovação final` == True")
Se a ideia era filtrar quem foi reprovado:
df.query("`Aprovação final` == False")
Dica de Ouro: Para evitar ter que usar crases no .query(), uma boa prática de Engenharia de Dados é nomear as colunas sem espaços e sem acentos, usando o padrão snake_case (ex: df['aprovacao_final']).
2. Forma Mais Rápida (Pythônica) de Criar a Coluna de Aprovação
No seu terceiro exercício, você usou:
df['Aprovação final'] = df['Notas finais'].apply(lambda x: True if x >=6 else False)
O código funciona, mas no Pandas nós podemos fazer isso de forma direta e muito mais rápida sem precisar do .apply() ou do lambda. Como o Pandas trabalha com operações vetorizadas, você pode fazer uma comparação direta na coluna inteira, e ele já devolverá True ou False automaticamente:
# Faz exatamente a mesma coisa, de forma mais simples e performática
df['Aprovação final'] = df['Notas finais'] >= 6
3. Ajuste no Cálculo dos Pontos Extras
No primeiro exercício, você calculou os pontos extras multiplicando a nota por 0.4.
Fique atenta apenas se a regra de negócio do desafio pedia para calcular 40% da nota atual ou se pedia para somar um bônus fixo de 0.4 pontos.
Se o objetivo era dar 0.4 pontos a mais para todo mundo diretamente, a operação vetorizada pura também resolve sem lambda:
# Soma 0.4 pontos diretamente em cada linha da coluna
df['Pontos_extras'] = df['Notas'] + 0.4
Excelente iniciativa em compartilhar sua resolução no fórum. Ajuste a linha do .query() no seu notebook e continue praticando com o Pandas!
Espero que possa ter lhe ajudado!