Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] [Projeto] Analisando planilha e gerando gráficos

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Load the data
file_path = 'Média de notas.csv'
df = pd.read_csv(file_path)

# Drop completely empty columns/rows if any, or just inspect
print("--- Informações sobre os dados ---")
df.info()

# Calculate the mean of the 4 tests for each student
# Assuming columns are 'Prova 1', 'Prova 2', 'Prova 3', 'Prova 4'
test_cols = ['Prova 1', 'Prova 2', 'Prova 3', 'Prova 4']
df['Nota final'] = df[test_cols].mean(axis=1)

print("\n--- Primeiras linhas com a Nota Final calculada ---")
print(df[['Aluno', 'Nota final']].head(10))

# Save the updated dataset
df.to_csv('Média_de_notas_calculada.csv', index=False)

# Create a scatter plot of the averages
plt.figure(figsize=(10, 6))
sns.scatterplot(x=df.index, y=df['Nota final'], color='blue', alpha=0.7)
plt.title('Gráfico de Dispersão das Médias Finais dos Alunos')
plt.xlabel('Índice do Aluno')
plt.ylabel('Média Final')
plt.axhline(y=df['Nota final'].mean(), color='red', linestyle='--', label='Média da Turma')
plt.legend()
plt.tight_layout()
plt.savefig('dispersao_medias.png')


--- Informações sobre os dados ---
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 999 entries, 0 to 998
Data columns (total 6 columns):
 #   Column      Non-Null Count  Dtype  
---  ------      --------------  -----  
 0   Aluno       20 non-null     object 
 1   Prova 1     20 non-null     float64
 2   Prova 2     20 non-null     float64
 3   Prova 3     20 non-null     float64
 4   Prova 4     20 non-null     float64
 5   Nota final  0 non-null      float64
dtypes: float64(5), object(1)
memory usage: 47.0+ KB

--- Primeiras linhas com a Nota Final calculada ---
                     Aluno  Nota final
0          Marcelo Barbosa       7.800
1           Rafaela Santos       6.200
2           Ronaldo Santos       6.725
3    Lucas Gabriel Ribeiro       7.050
4           Luana da Silva       6.925
5          Mariana Pereira       4.275
6     Maria Eduarda Farias       7.675
7  Fernando Henrique Silva       6.250
8     Pedro Henrique Souza       6.325
9       Ana Paula Oliveira       3.925

Análise dos Tipos de Dados

Ao analisar o arquivo Média de notas.csv, identifiquei que a tabela contém os seguintes tipos de dados:

  • Aluno: Texto/String (object), contendo os nomes dos alunos.
  • Prova 1, Prova 2, Prova 3 e Prova 4: Numéricos com casas decimais (float64), representando a nota de cada avaliação.
  • Nota final: Originalmente era uma coluna numérica (float64) sem dados preenchidos.

Cálculo das Médias Aritméticas

Realizei o cálculo da média aritmética utilizando as notas das quatro provas para cada aluno e preenchi a coluna "Nota final". Aqui estão as médias dos 10 primeiros alunos da lista:

  1. Marcelo Barbosa: 7.80
  2. Rafaela Santos: 6.20
  3. Ronaldo Santos: 6.72
  4. Lucas Gabriel Ribeiro: 7.05
  5. Luana da Silva: 6.92
  6. Mariana Pereira: 4.27
  7. Maria Eduarda Farias: 7.67
  8. Fernando Henrique Silva: 6.25
  9. Pedro Henrique Souza: 6.32
  10. Ana Paula Oliveira: 3.92

Criei um novo arquivo chamado Média_de_notas_calculada.csv no ambiente com todos os dados preenchidos.

Gráfico de Dispersão

Gerei o gráfico de dispersão das médias finais solicitadas utilizando a linguagem Python e suas bibliotecas de visualização (matplotlib e seaborn). O gráfico foi adicionado no topo desta resposta.

No gráfico, cada ponto azul representa a média final de um aluno (distribuídos pelo índice de cada um na lista) e a linha tracejada vermelha indica a média geral da turma, facilitando a identificação de quais estudantes ficaram acima ou abaixo da média do grupo.

1 resposta
solução!

Olá, Edson! Tudo bem?

Excelente trabalho! Você elevou o nível do desafio ao utilizar Python com as bibliotecas Pandas, Matplotlib e Seaborn para automatizar a análise. Essa é uma transição muito valiosa do uso de ferramentas de chat para a análise de dados programática.

Sua entrega demonstra um rigor técnico impecável:

  • Automação do Processo: Ao criar o script, você garantiu que o cálculo da média aritmética e a geração do gráfico pudessem ser replicados para qualquer volume de dados de forma instantânea.
  • Inspeção de Dados: O uso do df.info() foi uma ótima escolha para validar que os tipos de dados (Strings para nomes e Floats para notas) estavam corretos antes de iniciar os cálculos.
  • Visualização Estratégica: O gráfico de dispersão com a linha tracejada da média da turma é uma ferramenta poderosa para análise de desempenho, permitindo identificar rapidamente outliers (alunos com notas muito acima ou abaixo do esperado).
  • Manipulação de Arquivos: Você salvou o resultado em um novo arquivo (Média_de_notas_calculada.csv), o que é uma boa prática para manter a integridade dos dados originais.

Como você está avançando em Python, uma dica interessante para o próximo projeto é utilizar o método df.describe(). Ele gera automaticamente estatísticas como desvio padrão, quartis e valores mínimos/máximos, o que daria uma profundidade ainda maior à sua análise educacional.

Espero que possa ter lhe ajudado!