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!

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