0
0
Pandasdata~20 mins

Binning with cut() and qcut() in Pandas - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Binning Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of pandas cut() with custom bins
What is the output of the following code snippet?
Pandas
import pandas as pd
import numpy as np

values = pd.Series([1, 7, 5, 4, 6, 3])
bins = [0, 3, 6, 9]
categories = pd.cut(values, bins)
print(categories.value_counts().to_dict())
A{'(0, 3]': 2, '(3, 6]': 2, '(6, 9]': 2}
B{'(0, 3]': 1, '(3, 6]': 4, '(6, 9]': 1}
C{'(0, 3]': 3, '(3, 6]': 2, '(6, 9]': 1}
D{'(0, 3]': 2, '(3, 6]': 3, '(6, 9]': 1}
Attempts:
2 left
💡 Hint
Remember that cut() bins are right-inclusive by default.
data_output
intermediate
2:00remaining
Number of bins created by qcut() with duplicates
Given the following code, how many unique bins does qcut() create?
Pandas
import pandas as pd
values = pd.Series([1, 2, 2, 3, 4, 5, 6, 7, 8, 9])
categories = pd.qcut(values, 4, duplicates='drop')
print(categories.cat.categories)
A2
B4
C3
D5
Attempts:
2 left
💡 Hint
qcut tries to create equal-sized bins but drops duplicates in bin edges.
🔧 Debug
advanced
2:00remaining
Identify the error in this cut() usage
What error does the following code raise?
Pandas
import pandas as pd
values = pd.Series([1, 2, 3, 4, 5])
bins = [0, 2, 4]
categories = pd.cut(values, bins, labels=["Low", "Medium", "High"])
print(categories)
AValueError: Bin labels must be one fewer than the number of bin edges
BTypeError: labels must be a list of strings
CIndexError: list index out of range
DNo error, prints categories with labels
Attempts:
2 left
💡 Hint
Check the number of labels vs number of bins.
visualization
advanced
2:00remaining
Interpreting qcut() bin edges from output
Given this code, which option correctly describes the bin edges printed?
Pandas
import pandas as pd
values = pd.Series([10, 20, 30, 40, 50, 60, 70, 80, 90, 100])
categories = pd.qcut(values, 5)
print(categories.cat.categories)
ABins split data into 4 groups with equal counts
BBins split data into 5 equal-sized groups by value ranges with edges at 10, 28, 46, 64, 82, 100
CBins split data into 5 equal-width intervals from 10 to 100
DBins split data into 5 groups but edges are arbitrary and not quantiles
Attempts:
2 left
💡 Hint
qcut creates bins with equal number of data points, edges are quantiles.
🚀 Application
expert
3:00remaining
Choosing binning method for skewed data
You have a dataset with highly skewed income values. You want to create 4 bins that each contain roughly the same number of people. Which method and parameters should you use?
AUse pandas qcut() with 4 bins and duplicates='drop'
BUse pandas cut() with 4 equal-width bins
CUse pandas cut() with custom bins based on income quantiles
DUse pandas qcut() with 4 bins and labels=False
Attempts:
2 left
💡 Hint
Think about how to get bins with equal counts despite skew.