Statistics Measures of Spread
Language: Statistics
scores = [32, 35, 38, 40, 41, 43, 44, 45, 47, 48, 49, 50]
scores.sort()
n = len(scores)
def percentile(data, p):
rank = (p / 100) * (n - 1)
lower = int(rank) # index just below the rank
upper = lower + 1 if lower + 1 < n else lower
fraction = rank - lower
return data[lower] + fraction * (data[upper] - data[lower])
p25 = percentile(scores, 25)
p50 = percentile(scores, 50)
p75 = percentile(scores, 75)
p90 = percentile(scores, 90)
print(f"25th percentile (Q1): {p25}")
print(f"50th percentile (median): {p50}")
print(f"75th percentile (Q3): {p75}")
print(f"90th percentile: {p90}")
# Output:
# 25th percentile (Q1): 39.5
# 50th percentile (median): 43.5
# 75th percentile (Q3): 47.25
# 90th percentile: 48.9Output
Click Run to execute this code.