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:
- Marcelo Barbosa: 7.80
- Rafaela Santos: 6.20
- Ronaldo Santos: 6.72
- Lucas Gabriel Ribeiro: 7.05
- Luana da Silva: 6.92
- Mariana Pereira: 4.27
- Maria Eduarda Farias: 7.67
- Fernando Henrique Silva: 6.25
- Pedro Henrique Souza: 6.32
- 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.