Binning helps group continuous numbers into categories. It makes data easier to understand and analyze.
0
0
Binning with cut() and qcut() in Pandas
Introduction
You want to turn ages into groups like 'young', 'middle', 'old'.
You need to split sales amounts into low, medium, and high ranges.
You want to create equal-sized groups from test scores.
You want to simplify data for charts by grouping values.
You want to find patterns by grouping continuous data.
Syntax
Pandas
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False) pandas.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='raise')
cut() divides data into fixed intervals you define.
qcut() divides data into equal-sized groups based on data distribution.
Examples
This cuts ages into groups based on fixed bins: 20-30, 30-40, etc.
Pandas
import pandas as pd ages = [22, 25, 47, 35, 46, 55] bins = [20, 30, 40, 50, 60] categories = pd.cut(ages, bins) print(categories)
This splits scores into 3 groups with roughly equal number of items.
Pandas
import pandas as pd scores = [55, 89, 76, 45, 92, 67, 88] quantiles = pd.qcut(scores, 3) print(quantiles)
Sample Program
This program shows how to group ages into categories using fixed ranges with cut() and equal-sized groups with qcut().
Pandas
import pandas as pd # Sample data: ages ages = [18, 22, 27, 35, 42, 48, 55, 60, 70, 75] # Using cut() to create age groups with fixed bins bins = [0, 25, 50, 75] age_groups = pd.cut(ages, bins, labels=['Young', 'Middle-aged', 'Senior']) print('Age groups with cut():') print(age_groups) # Using qcut() to create 3 equal-sized groups age_quantiles = pd.qcut(ages, 3, labels=['Low', 'Medium', 'High']) print('\nAge groups with qcut():') print(age_quantiles)
OutputSuccess
Important Notes
With cut(), bins must cover all data values or some values become NaN.
qcut() may fail if there are many duplicate values at bin edges; use duplicates='drop' to fix.
Labels help name groups but are optional; if omitted, intervals are shown.
Summary
cut() groups data into fixed ranges you choose.
qcut() groups data into equal-sized buckets based on data distribution.
Binning makes continuous data easier to analyze and visualize.