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)