Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
2
respostas

Desafio: bora praticar?

import pandas as pd

# 0) Leitura inicial do arquivo CSV
# O pandas interpreta o texto do arquivo e o transforma em uma tabela estruturada (DataFrame)
df = pd.read_csv('alunos.csv')

# Tratamento prévio: preenchendo as notas nulas (NaN) com 0.0 para possibilitar as operações matemáticas
df['Notas'] = df['Notas'].fillna(0.0)
# 1) O objetivo deste código é calcular os pontos extras dos alunos, que equivalem a 40% da nota atual, e armazená-los em uma nova coluna chamada "Pontos_extras".

# Criando a coluna de pontos extras multiplicando a nota carregada do CSV por 0.40
df['Pontos_extras'] = df['Notas'] * 0.40

print("Coluna 'Pontos_extras' adicionada com sucesso:")
print(df[['Nome', 'Notas', 'Pontos_extras']].head())
# 2) O objetivo deste código é somar as notas originais do arquivo com os pontos extras calculados anteriormente, gerando a coluna "Notas_finais".

# Somando as colunas matemáticas para obter o resultado final do estudante
df['Notas_finais'] = df['Notas'] + df['Pontos_extras']

print("Coluna 'Notas_finais' calculada:")
print(df[['Nome', 'Notas', 'Pontos_extras', 'Notas_finais']].head())
# 3) O objetivo deste código é criar uma coluna de aprovação final baseada no novo critério: se a nota final for igual ou maior que 6.0, o resultado será True; caso contrário, False.

# Gerando a coluna booleana através de um teste condicional de comparação (>= 6)
df['Aprovado_final'] = df['Notas_finais'] >= 6.0

print("Status de 'Aprovado_final' definido:")
print(df[['Nome', 'Notas_finais', 'Aprovado_final']].head())
# 4) O objetivo deste código é aplicar um filtro combinado para selecionar e exibir apenas os alunos que haviam sido reprovados inicialmente (no CSV original), mas que alcançaram a aprovação após o acréscimo dos pontos extras.

# Filtrando o DataFrame: 'Aprovado' original precisa ser False E 'Aprovado_final' precisa ser True
alunos_recuperados = df[(df['Aprovado'] == False) & (df['Aprovado_final'] == True)]

print("Alunos que mudaram de status (de Reprovado para Aprovado):")
print(alunos_recuperados[['Nome', 'Notas', 'Notas_finais', 'Aprovado', 'Aprovado_final']])
2 respostas

Olá, Estudante! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei da forma como você organizou cada etapa do desafio com comentários claros e objetivos. Você aplicou corretamente o tratamento dos valores nulos com fillna(0.0), criou as colunas de cálculo e utilizou um filtro combinado para identificar os alunos que mudaram de status após os pontos extras. Isso demonstra uma boa compreensão da manipulação de dados com Pandas.

Uma dica interessante para o futuro é utilizar o método query(), que pode deixar alguns filtros mais legíveis. Veja este exemplo:


aprovados = df.query('Notas_finais >= 6')
print(aprovados)

Esse código cria um novo DataFrame contendo apenas os alunos com nota final maior ou igual a 6.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
solução!

Obrigado pelo feedback e pelas dicas.