📖 Scenario: You work as a data analyst for a small retail company. You have collected the daily sales amounts for a week. You want to understand how these sales amounts are distributed by grouping them into bins.
🎯 Goal: Build a simple Python program that uses matplotlib to calculate the count of sales amounts in each bin and the edges of these bins.
📋 What You'll Learn
Create a list called sales with the exact daily sales amounts given.
Create a variable called bins with the exact bin edges given.
Use matplotlib.pyplot.hist with bins and density=False to get the counts and bin edges.
Print the counts and bin edges exactly as shown.
💡 Why This Matters
🌍 Real World
Grouping data into bins helps businesses understand patterns, like how many sales fall into certain ranges.
💼 Career
Data analysts and scientists often use binning to summarize and visualize data distributions for reports and decision-making.
Progress0 / 4 steps
1
Create the sales data list
Create a list called sales with these exact daily sales amounts: 23, 45, 12, 67, 34, 89, 55.
Matplotlib
Hint
Use square brackets to create a list and separate numbers with commas.
2
Create the bins variable
Create a list called bins with these exact bin edges: 0, 20, 40, 60, 80, 100.
Matplotlib
Hint
Bins are the edges that separate the groups. Use a list with the exact numbers.
3
Calculate counts and bin edges using matplotlib
Import matplotlib.pyplot as plt. Use plt.hist with sales and bins, and set density=False. Assign the returned counts to counts and bin edges to edges.
Matplotlib
Hint
Use import matplotlib.pyplot as plt and call plt.hist with the correct arguments.
4
Print the counts and bin edges
Print the counts array and the edges array exactly as they are.
Matplotlib
Hint
Use two print statements: one for counts and one for edges.
Practice
(1/5)
1. What does the bins parameter control when creating a histogram in matplotlib?
easy
A. The number of intervals to divide the data into
B. The color of the bars in the histogram
C. The width of the plot window
D. The type of plot to display
Solution
Step 1: Understand the role of bins in histograms
The bins parameter sets how many groups or intervals the data is split into for counting.
Step 2: Relate bins to data grouping
Each bin counts how many data points fall within its range, so bins control these ranges.
Final Answer:
The number of intervals to divide the data into -> Option A
Quick Check:
Bins = intervals count [OK]
Hint: Bins split data into groups for counting [OK]
Common Mistakes:
Confusing bins with color or style options
Thinking bins control plot size
Assuming bins change plot type
2. Which of the following is the correct way to get bin counts and edges using matplotlib's hist function?
easy
A. edges, counts = plt.hist(data, bins=5)
B. plt.hist(data, bins=5).counts, plt.hist(data, bins=5).edges
C. counts = plt.hist(data, bins=5)
D. counts, edges = plt.hist(data, bins=5)
Solution
Step 1: Recall the return values of plt.hist
plt.hist returns a tuple: (counts, bin edges, patches).
Step 2: Match the correct unpacking order
The first returned value is counts, second is edges, so counts, edges = plt.hist(...) is correct.
Final Answer:
counts, edges = plt.hist(data, bins=5) -> Option D
Quick Check:
Return order = counts, edges [OK]
Hint: Remember plt.hist returns counts first, then edges [OK]
Common Mistakes:
Swapping counts and edges order
Trying to access attributes instead of unpacking
Assigning only one variable to plt.hist output
3. Given the code:
import matplotlib.pyplot as plt
import numpy as np
data = np.array([1, 2, 2, 3, 4, 5, 5, 5, 6])
counts, edges = plt.hist(data, bins=[1, 3, 5, 7])
print(counts)
print(edges)
What will be the output of counts and edges?
medium
A. [3. 3. 3.]
[1 3 5 7]
B. [3. 4. 2.]
[1 3 5 7]
C. [3. 2. 4.]
[1 3 5 7]
D. [3 3 3]
[1 2 3 4]
Solution
Step 1: Understand bins and data grouping
Bins are [1,3), [3,5), [5,7). Count data points in each range.
Step 2: Count data points in each bin
Bin [1,3): values 1,2,2 -> 3 points; Bin [3,5): values 3,4 -> 2 points; Bin [5,7): values 5,5,5,6 -> 4 points.
Final Answer:
[3. 2. 4.]
[1 3 5 7] -> Option C
Quick Check:
Counts match bins ranges [OK]
Hint: Count data points inside each bin range [OK]
Common Mistakes:
Miscounting points on bin edges
Assuming bins are inclusive on both ends
Confusing bin edges with counts
4. What is wrong with this code snippet?
import matplotlib.pyplot as plt
data = [1, 2, 3, 4, 5]
counts, edges = plt.hist(data, bins=3)
print(edges)
print(counts)
medium
A. The variable names counts and edges are swapped in print statements
B. Nothing is wrong; the code runs correctly
C. The order of unpacking is reversed; edges should come first
D. The bins parameter must be a list, not an integer
Solution
Step 1: Check plt.hist return values
plt.hist returns counts first, then edges, so unpacking as counts, edges is correct.
Step 2: Verify bins parameter and print order
Bins can be an integer for number of bins; printing edges then counts is valid.
Final Answer:
Nothing is wrong; the code runs correctly -> Option B
Quick Check:
Unpacking and bins usage are correct [OK]
Hint: Remember plt.hist returns counts first, edges second [OK]
Common Mistakes:
Swapping counts and edges variables
Thinking bins must be a list
Confusing print order with unpacking order
5. You have data points: [2, 4, 4, 4, 6, 8, 10]. You want to create bins so that the first bin counts values less than 5, the second bin counts values from 5 to less than 9, and the last bin counts values 9 and above. Which bin edges should you use in plt.hist to get correct counts?
hard
A. [0, 5, 9, 11]
B. [0, 4, 9, 10]
C. [2, 5, 9, 10]
D. [1, 5, 9, 10]
Solution
Step 1: Define bins to match ranges
First bin: values less than 5 -> bin edge 0 to 5; second bin: 5 to less than 9 -> 5 to 9; third bin: 9 and above -> 9 to 11 (to include 10).
Step 2: Choose bin edges covering all data
Edges [0, 5, 9, 11] cover all points and match desired ranges.
Final Answer:
[0, 5, 9, 11] -> Option A
Quick Check:
Bins match desired value ranges [OK]
Hint: Set bin edges to cover desired value ranges fully [OK]
Common Mistakes:
Using edges that exclude max data point
Not covering all data points in bins
Confusing inclusive and exclusive bin edges
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.