📖 Scenario: You work in a small bakery that tracks daily sales of bread loaves. You want to understand how sales vary by calculating percentiles and quantiles. This helps you see typical sales and spot busy or slow days.
🎯 Goal: Build a simple Python program using SciPy to calculate specific percentiles and quantiles from daily sales data.
📋 What You'll Learn
Create a list of daily sales numbers called daily_sales with exact values
Create a variable called quantile_value to specify which quantile to calculate
Use SciPy's scoreatpercentile function to find the percentile
Use SciPy's mquantiles function to find the quantile
Print the results clearly
💡 Why This Matters
🌍 Real World
Percentiles and quantiles help businesses understand data spread, like sales performance or customer wait times, to make better decisions.
💼 Career
Data analysts and scientists often calculate percentiles and quantiles to summarize data and report insights clearly.
Progress0 / 4 steps
1
Create the daily sales data list
Create a list called daily_sales with these exact values: [15, 22, 13, 27, 19, 30, 25].
SciPy
Hint
Use square brackets to create a list and separate numbers with commas.
2
Set the quantile value
Create a variable called quantile_value and set it to 0.75 to represent the 75th percentile.
SciPy
Hint
Assign the number 0.75 to the variable quantile_value.
3
Calculate the 75th percentile and quantile
Import scoreatpercentile and mquantiles from scipy.stats. Then calculate the 75th percentile of daily_sales using scoreatpercentile with 75 as the percentile. Also calculate the quantile using mquantiles with quantile_value. Store results in percentile_75 and quantile_75 respectively.
SciPy
Hint
Use scoreatpercentile(daily_sales, 75) and mquantiles(daily_sales, prob=[quantile_value]). Remember mquantiles returns a list, so get the first item.
4
Print the percentile and quantile results
Print the values of percentile_75 and quantile_75 with clear messages. Use print statements to show: "75th Percentile: " followed by percentile_75 "75th Quantile: " followed by quantile_75.
SciPy
Hint
Use two print statements with the exact text and variables.
Practice
(1/5)
1. What does the 90th percentile represent in a dataset?
easy
A. The average of the top 90% of data
B. The value below which 90% of the data falls
C. The value above which 90% of the data falls
D. The middle value of the dataset
Solution
Step 1: Understand percentile definition
A percentile indicates the value below which a given percentage of observations fall.
Step 2: Apply to 90th percentile
The 90th percentile means 90% of data points are below this value.
Final Answer:
The value below which 90% of the data falls -> Option B
Quick Check:
Percentile = value below % data [OK]
Hint: Percentile = value below that percent of data [OK]
Common Mistakes:
Confusing percentile with average
Thinking percentile is value above percentage
Mixing percentile with median
2. Which of the following is the correct way to find the 25th percentile using scipy.stats?
easy
A. stats.quantile(data, 25)
B. stats.percentile(data, 0.25)
C. stats.mquantiles(data, prob=0.25)
D. stats.scoreatpercentile(data, 25)
Solution
Step 1: Recall scipy function for percentile
The function to find percentile is stats.scoreatpercentile with arguments (data, percentile).
Step 2: Check options
stats.scoreatpercentile(data, 25) uses stats.scoreatpercentile(data, 25), which is correct for 25th percentile.
Final Answer:
stats.scoreatpercentile(data, 25) -> Option D
Quick Check:
Use scoreatpercentile for percentiles [OK]
Hint: Use stats.scoreatpercentile(data, percentile) [OK]
Common Mistakes:
Using wrong function names like percentile or quantile
Passing 0.25 instead of 25 for percentile
Confusing quantiles with percentiles
3. Given the data array [10, 20, 30, 40, 50], what is the output of stats.scoreatpercentile(data, 40)?
medium
A. 26.0
B. 22.0
C. 30.0
D. 20.0
Solution
Step 1: Understand percentile calculation
40th percentile means the value below which 40% of data lies. Data sorted: [10, 20, 30, 40, 50].
Step 2: Calculate 40th percentile using interpolation
Position = (40/100)*(n-1) = 0.4*4 = 1.6. Interpolate between data[1]=20 and data[2]=30: 20 + 0.6*(30-20) = 20 + 6 = 26.0.
Final Answer:
26.0 -> Option A
Quick Check:
Interpolation gives 26.0 [OK]
Hint: Percentile position = p/100*(n-1), interpolate values [OK]
Common Mistakes:
Choosing nearest data point without interpolation
Using index p instead of p/100*(n-1)
Confusing percentile with median
4. The code below is intended to find the quartiles of data using scipy but raises an error. What is the error?
import scipy.stats as stats
data = [5, 10, 15, 20, 25]
quartiles = stats.mstats.mquantiles(data, prob=[0.25, 0.5, 0.75])
print(quartiles)
medium
A. mquantiles requires numpy array, not list
B. prob argument should be a single float, not a list
C. No error, code runs correctly
D. mquantiles is not in scipy.stats.mstats
Solution
Step 1: Check function location and usage
stats.mstats.mquantiles is a valid function and accepts prob as a list for multiple quantiles.
Step 2: Check input data type
mquantiles accepts list or array-like data, so list input is valid.
Final Answer:
No error, code runs correctly -> Option C
Quick Check:
mquantiles accepts list and prob list [OK]
Hint: mquantiles accepts list and prob list [OK]
Common Mistakes:
Assuming mquantiles only accepts numpy arrays
Thinking prob must be a single float
Confusing function location in scipy
5. You have a dataset of exam scores: [55, 70, 65, 80, 90, 85, 75]. You want to divide the scores into four equal groups (quartiles) using scipy. Which code snippet correctly computes the quartiles?
hard
A. stats.mstats.mquantiles(scores, prob=[0.25, 0.5, 0.75])
B. stats.scoreatpercentile(scores, [25, 50, 75])
C. np.percentile(scores, [0.25, 0.5, 0.75])
D. stats.mstats.mquantiles(scores, prob=[25, 50, 75])
Solution
Step 1: Identify correct function for quartiles
Quartiles are quantiles at 25%, 50%, and 75%. stats.mstats.mquantiles accepts prob as fractions between 0 and 1.
Step 2: Check options for correct prob format
stats.mstats.mquantiles(scores, prob=[0.25, 0.5, 0.75]) uses prob=[0.25, 0.5, 0.75], which is correct. stats.scoreatpercentile(scores, [25, 50, 75]) uses scoreatpercentile but with a list, which is invalid. np.percentile(scores, [0.25, 0.5, 0.75]) uses numpy but with fractions instead of percentages. stats.mstats.mquantiles(scores, prob=[25, 50, 75]) uses prob with values >1, which is invalid.
Final Answer:
stats.mstats.mquantiles(scores, prob=[0.25, 0.5, 0.75]) -> Option A
Quick Check:
mquantiles prob values are fractions [OK]
Hint: Use mquantiles with prob as fractions (0.25, 0.5, 0.75) [OK]
Common Mistakes:
Passing percent values instead of fractions to prob
Using scoreatpercentile with list of percentiles
Confusing numpy percentile input format
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.