Skip to content

Photo by Jannis Lucas on Unsplash.

Every year, American high school students take SATs, which are standardized tests intended to measure literacy, numeracy, and writing skills. There are three sections - reading, math, and writing, each with a maximum score of 800 points. These tests are extremely important for students and colleges, as they play a pivotal role in the admissions process.

Analyzing the performance of schools is important for a variety of stakeholders, including policy and education professionals, researchers, government, and even parents considering which school their children should attend.

You have been provided with a dataset called schools.csv, which is previewed below.

You have been tasked with answering three key questions about New York City (NYC) public school SAT performance.

🚀 O código realiza filtragem, ordenação, agrupamento estatístico e seleção de dados, permitindo analisar quais escolas têm melhor desempenho no SAT e qual distrito apresenta maior variação na pontuação.

📌 Resumo das Funcionalidades Utilizadas 1️⃣ Cálculo de um critério para seleção de escolas com melhores notas de matemática

bmr = 0.8 * 800 Cálculo: Define um critério para as melhores escolas de matemática, considerando 80% da pontuação máxima de 800. Aplicação: Criar um limite para selecionar escolas com alto desempenho em matemática. 2️⃣ Filtragem de dados com base em uma condição

best_math_schools = schools[schools['average_math'] >= bmr][['school_name','average_math']] Uso: Filtra as escolas com notas de matemática maiores ou iguais a bmr. Aplicação: Criar um subconjunto apenas com as escolas que atendem ao critério de melhor desempenho em matemática. 3️⃣ Ordenação de valores

best_math_schools = best_math_schools.sort_values(by ='average_math', ascending=False) Função: sort_values(by='coluna', ascending=False) Uso: Ordena as escolas com melhores notas de matemática do maior para o menor valor. Aplicação: Classificar as escolas de acordo com o desempenho. 4️⃣ Criação de um novo DataFrame para as 10 melhores escolas no SAT

top_10_schools = pd.DataFrame() Uso: Inicializa um DataFrame vazio para armazenar os dados das escolas com melhores notas no SAT. Aplicação: Criar uma estrutura para armazenar os resultados das escolas com maior pontuação total. 5️⃣ Cálculo da pontuação total do SAT para cada escola

schools_std['total_SAT'] = schools['average_math'] + schools['average_reading'] + schools['average_writing'] Uso: Soma as médias de matemática, leitura e escrita para calcular a pontuação total do SAT. Aplicação: Criar uma métrica única para comparar o desempenho geral das escolas. 6️⃣ Cálculo de estatísticas por distrito (borough)

schools_std = schools_std.groupby(['borough'])['total_SAT'].agg([ ('num_schools','count'), ('average_SAT','mean'), ('std_SAT','std')]).round(2) Função: groupby('borough') Agrupa os dados por distrito. Função: agg() Aplica múltiplas funções estatísticas ao total do SAT por distrito: count: número de escolas. mean: média do SAT no distrito. std: desvio padrão do SAT no distrito. Função: .round(2) Arredonda os valores para duas casas decimais. Aplicação: Comparar o desempenho dos distritos e verificar quais têm maior variação no desempenho das escolas. 7️⃣ Identificação do distrito com maior desvio padrão no SAT

largest_std_dev = schools_std[schools_std['std_SAT'] == schools_std['std_SAT'].max()] Uso: Seleciona o distrito com o maior desvio padrão na pontuação do SAT. Aplicação: Identificar qual distrito tem a maior variação no desempenho das escolas. 8️⃣ Seleção das 10 melhores escolas com base no total SAT

top_10_schools['school_name'] = schools['school_name'] top_10_schools['total_SAT'] = schools['average_math'] + schools['average_reading'] + schools['average_writing'] top_10_schools = top_10_schools.sort_values(by='total_SAT', ascending=False) top_10_schools = top_10_schools.iloc[0:10, :] Uso: Cria a coluna 'total_SAT' somando as médias das três áreas. Ordena os dados do maior para o menor valor de SAT. Seleciona apenas as 10 primeiras escolas com iloc[0:10, :]. Aplicação: Destacar as escolas com melhor desempenho geral no SAT.

# Re-run this cell 
import pandas as pd

# Read in the data
schools = pd.read_csv("schools.csv")

# Preview the data
schools.head()

##### Which NYC schools have the best math results? #####
bmr = 0.8 * 800 #best math results are at least 80% of the total score
best_math_schools = schools[schools['average_math'] >= bmr][['school_name','average_math']]
#print(best_math_schools['average_math'].min()) #check do menor valor da tabela
best_math_schools = best_math_schools.sort_values(by ='average_math',ascending = False)

#### What are the top 10 performing schools based on the combined SAT scores? ####
top_10_schools = pd.DataFrame()
top_10_schools['school_name'] = schools['school_name']
top_10_schools['total_SAT'] = schools['average_math'] + schools['average_reading'] + schools['average_writing']
top_10_schools = top_10_schools.sort_values(by= 'total_SAT',ascending = False)
top_10_schools = top_10_schools.iloc[0:10,:]

####Which single borough has the largest standard deviation in the combined SAT score?####
schools_std = pd.DataFrame()
schools_std = schools[['school_name','borough','average_math','average_reading','average_writing']]
schools_std['total_SAT'] = schools['average_math'] + schools['average_reading'] + schools['average_writing']
schools_std = schools_std.groupby(['borough'])['total_SAT'].agg([('num_schools','count'),('average_SAT','mean'),('std_SAT','std')]).round(2)
largest_std_dev = schools_std[schools_std['std_SAT'] == schools_std['std_SAT'].max() ]
print(largest_std_dev)