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!

1
resposta

Desafio: bora praticar?

Olá, Colegas!

Vamos solucionar os problemas propostos abaixo utilizando os conhecimentos adquiridos até aqui.

import pandas as pd

# Importando a base de dados
url = 'https://raw.githubusercontent.com/alura-cursos/pandas-conhecendo-a-biblioteca/main/desafios/alunos.csv'
alunos = pd.read_csv(url)

# 1. Verificar dados nulos
print(alunos.isnull().sum())

# Tratamento dos dados nulos
# Preencher notas nulas com a média das notas
alunos['Notas'] = alunos['Notas'].fillna(alunos['Notas'].mean())

# 2. Remover Alice e Carlos
alunos = alunos.query("Nome != 'Alice' and Nome != 'Carlos'")

# 3. Filtrar apenas os alunos aprovados
alunos_aprovados = alunos.query("Aprovado == True")

# Extra: corrigir notas 7.0 para 8.0
alunos_aprovados['Notas'] = alunos_aprovados['Notas'].replace(7.0, 8.0)

# 4. Salvar os aprovados em CSV
alunos_aprovados.to_csv('alunos_aprovados.csv', index=False)

alunos_aprovados

Verificar nulos

alunos.isnull().sum()

Remover Alice e Carlos

alunos = alunos.query("Nome != 'Alice' and Nome != 'Carlos'")

Filtrar aprovados

alunos_aprovados = alunos.query("Aprovado == True")

Substituir notas

alunos_aprovados['Notas'] = alunos_aprovados['Notas'].replace(7.0, 8.0)

Exportar para CSV

alunos_aprovados.to_csv('alunos_aprovados.csv', index=False)
1 resposta

Oii Vanelice, tudo bem?

Obrigada por compartilhar sua solução aqui no fórum, com certeza vai ajudar outros colegas que estiverem trabalhando no mesmo desafio!

Você cobriu todos os pontos propostos de forma bem organizada: verificou os nulos, preencheu com a média, removeu os alunos pelo nome, filtrou os aprovados e exportou o CSV. Ótimo encadeamento de operações.

Uma observação que vale notar: na linha onde você substitui notas 7.0 por 8.0 em alunos_aprovados, o pandas pode emitir um SettingWithCopyWarning porque alunos_aprovados é uma fatia do DataFrame original. Para evitar esse aviso e garantir que a alteração funcione como esperado, você pode criar uma cópia explícita antes:

alunos_aprovados = alunos.query("Aprovado == True").copy()
alunos_aprovados['Notas'] = alunos_aprovados['Notas'].replace(7.0, 8.0)

Isso deixa o código mais robusto e evita comportamentos inesperados em versões mais recentes do pandas.

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade