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']])