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.
# Re-run this cell
import pandas as pd
# Read in the data
schools = pd.read_csv("schools.csv")
# Preview the data
schools.head()
# Start coding here...
# Add as many cells as you like...#Question 1: Find schools with the best math scores
# Filtering schools with math score of at least 80%, or >=640
df = schools[schools["average_math"]>=640]
#Subset dataframe to only school name & average math
best_math_shools = df[["school_name","average_math"]]
#Sort dataframe by average math
best_math_schools=best_math_shools.sort_values(by="average_math",ascending=False )
#Question 2: Identifying the top 10 performing schools
#Create new colume for average scores
schools["total_SAT"]=schools["average_math"]+schools["average_reading"]+schools["average_writing"]
print(schools)
#sort by total SAT
top_10_schools=schools.sort_values(by="total_SAT", ascending=False)
print(top_10_schools)
#subset dataframe into school name & total sat only
top_10_schools=top_10_schools[["school_name","total_SAT"]].head(10)
print(top_10_schools)# Question 3: Which single borough has the largest standard deviation in the combined SAT score?
# Grouping the data by borough
group_by_borough = schools.groupby("borough").agg(
num_schools=("school_name", "count"),
average_SAT=("total_SAT", "mean"),
std_SAT=("total_SAT", "std")
).round(2)
largest_std_dev = group_by_borough.sort_values(by="std_SAT", ascending=False).head(1)
#rename all columns
largest_std_dev = largest_std_dev. rename(columns={
"num_schools":"num_schools",
"average_SAT":"average_SAT",
"std_SAT":"std_SAT"
})
print(largest_std_dev)Manhattan is the borough has the largest standard deviation in the combined SAT score