1
resposta

Desafio: bora praticar?

1. import pandas as pd

url = "https://raw.githubusercontent.com/alura-cursos/pandas-conhecendo-a-biblioteca/main/desafios/alunos.csv"
dados = pd.read_csv(url, sep=",")

2. print(dados.head(7)) #PRIMEIRAS 7 LINHAS
print(dados.tail(5)) #PRIMERIRAS 5 LINHAS

3. print(dados.shape) #LINHAS E COLUNAS

4. print(dados.columns)
dados.info()

alunos_com_nota = dados[dados["Notas"].notna()]
print(alunos_com_nota[["Nome", "Notas"]])

alunos_sem_nota = dados[dados["Notas"].isna()]
print(alunos_sem_nota[["Nome", "Notas"]])

EXTRA: 
estatistica = alunos_com_nota.describe()

media_notas = estatistica.loc['mean', 'Notas']
nota_maxima = estatistica.loc['max', 'Notas']
nota_minima = estatistica.loc['min', 'Notas']

print(f"Média das notas válidas: {media_notas:.2f}")
print(f"Nota máxima encontrada: {nota_maxima}")
print(f"Nota mínima encontrada: {nota_minima}")
1 resposta

Olá, Luísa. Como vai?

O seu código ficou simplesmente fantástico! Você resolveu todas as etapas do desafio do Pandas demonstrando um domínio excelente na manipulação, filtragem e análise exploratória de dados.

Gostaria de destacar e parabenizar os pontos altos da sua resolução:

  • Uso correto dos métodos de visualização e metadados: Utilizar o head(7) e tail(5) para inspecionar os extremos do DataFrame, além de verificar o tamanho com .shape e os tipos de dados com .info(), é o passo zero de qualquer cientista de dados de sucesso.
  • Filtragem inteligente com booleanos (.isna() e .notna()): Essa é a forma mais performática e recomendada no Pandas para isolar dados nulos e válidos. Você separou com precisão os alunos com e sem nota.
  • O bloco EXTRA: Você deu um show à parte aqui! Utilizar o método .describe() para gerar as estatísticas descritivas e depois navegar no DataFrame de resumo usando o .loc['mean', 'Notas'] para extrair métricas específicas foi uma sacada genial de nível avançado.

Como o seu objetivo é praticar e extrair o máximo da ferramenta, notei apenas um pequeno detalhe de digitação no seu comentário na linha do tail(5). Você escreveu # PRIMERIRAS 5 LINHAS, mas o método .tail() na verdade exibe as últimas 5 linhas do conjunto de dados.

Para enriquecer ainda mais o seu bloco "Extra", sabia que você pode calcular essas métricas diretamente nas colunas do DataFrame original sem precisar passar pelo .describe()? O Pandas possui funções nativas para isso que deixam o seu código ainda mais direto. Veja essa alternativa de boa prática:

# Calculando direto da coluna "Notas" dos alunos com nota
media_notas = alunos_com_nota["Notas"].mean()
nota_maxima = alunos_com_nota["Notas"].max()
nota_minima = alunos_com_nota["Notas"].min()

print(f"Média das notas válidas: {media_notas:.2f}")
print(f"Nota máxima encontrada: {nota_maxima}")
print(f"Nota mínima encontrada: {nota_minima}")

Dessa forma, o seu script roda de maneira super limpa e direta. Parabéns pelo empenho, pela curiosidade de ir além do enunciado e pela excelente organização do código!

Espero que possa ter lhe ajudado!