Up to this point in our exploratory data analysis, we have examined location, variability, shape, and heterogeneity across the primary features of the BigMart Sales dataset. We now address a dimension of fundamental importance in economic, commercial, and management analytics: concentration.
The core premise is straightforward: knowing average sales per product or store is insufficient; we must also understand how total revenue is distributed across categories, store types, or individual outlets. Two scenarios can share identical total sales and averages yet exhibit completely different internal structures: in one, sales may be evenly distributed across all units, whereas in the other, a tiny fraction of categories or branches generates the vast majority of revenue.
From an EDA perspective, concentration measures and visual diagnostics answer critical business questions:
What percentage of overall revenue is driven by a handful of product categories?
Do outlets contribute evenly to overall sales volume, or do a few dominant stores dominate revenue generation?
Does the revenue distribution follow a Pareto-style structure, where a small minority of entities accounts for most of the volume?
In this chapter, we develop descriptive metrics and graphical representations to evaluate sales concentration in BigMart Sales, culminating in a concentration mini-dashboard.
Environment Setup
We will work with the following BigMart dataset. For this section, we will use Python alongside pandas, numpy, plotly, and matplotlib.
import numpy as npimport pandas as pdimport plotly.express as pximport plotly.graph_objects as goDATA_PATH ="../../data/bigmart_sales.csv"df = pd.read_csv(DATA_PATH)df.head()
Item_Identifier
Item_Weight
Item_Fat_Content
Item_Visibility
Item_Type
Item_MRP
Outlet_Identifier
Outlet_Establishment_Year
Outlet_Size
Outlet_Location_Type
Outlet_Type
Item_Outlet_Sales
0
FDA15
9.30
Low Fat
0.016047
Dairy
249.8092
OUT049
1999
Medium
Tier 1
Supermarket Type1
3735.1380
1
DRC01
5.92
Regular
0.019278
Soft Drinks
48.2692
OUT018
2009
Medium
Tier 3
Supermarket Type2
443.4228
2
FDN15
17.50
Low Fat
0.016760
Meat
141.6180
OUT049
1999
Medium
Tier 1
Supermarket Type1
2097.2700
3
FDX07
19.20
Regular
0.000000
Fruits and Vegetables
182.0950
OUT010
1998
NaN
Tier 3
Grocery Store
732.3800
4
NCD19
8.93
Low Fat
0.000000
Household
53.8614
OUT013
1987
High
Tier 3
Supermarket Type1
994.7052
As in previous sections, we ensure relevant categorical fields are standardized before aggregation.
# Basic standardization of categorical values in BigMartif"Item_Fat_Content"in df.columns: df["Item_Fat_Content"] = ( df["Item_Fat_Content"] .replace({"LF": "Low Fat","low fat": "Low Fat","reg": "Regular" }) )candidate_cols = ["Item_Identifier","Item_Type","Outlet_Identifier","Outlet_Type","Outlet_Location_Type","Outlet_Size","Item_Outlet_Sales",]existing = [c for c in candidate_cols if c in df.columns]df[existing].head()
Item_Identifier
Item_Type
Outlet_Identifier
Outlet_Type
Outlet_Location_Type
Outlet_Size
Item_Outlet_Sales
0
FDA15
Dairy
OUT049
Supermarket Type1
Tier 1
Medium
3735.1380
1
DRC01
Soft Drinks
OUT018
Supermarket Type2
Tier 3
Medium
443.4228
2
FDN15
Meat
OUT049
Supermarket Type1
Tier 1
Medium
2097.2700
3
FDX07
Fruits and Vegetables
OUT010
Grocery Store
Tier 3
NaN
732.3800
4
NCD19
Household
OUT013
Supermarket Type1
Tier 3
High
994.7052
Conceptual Foundations
Relative Share
Let \(x_i\) be the total sales generated by category or unit \(i\). Its relative share relative to total sales is defined as:
\[
p_i = \frac{x_i}{\sum_{j=1}^{n} x_j}.
\]
Expressed as a percentage:
\[
p_i^{(\%)} = 100 \cdot p_i.
\]
Cumulative Share
Sorting units in descending order by contribution, the cumulative share up to position \(k\) is given by:
\[
P_k = \sum_{i=1}^{k} p_{(i)},
\]
where \(p_{(i)}\) represents the share of the \(i\)-th ranked unit.
This metric forms the basis of Pareto analysis, determining how many categories account for a targeted percentage of revenue.
Concentration Curve
A concentration curve compares observed cumulative revenue against an idealized uniform distribution. When a few units account for most sales, the cumulative curve rises steeply at first before flattening, departing significantly from the diagonal line of equal distribution.
This visual representation serves as a conceptual foundation for advanced metrics like Lorenz curves and Gini indices.
Sales Concentration by Product Category
We begin by aggregating total sales across product types.
Unlike category-level analysis, store-level concentration involves fewer entities, highlighting operational dependencies when a minority of outlets generates a major share of total revenue.
Concentration by Outlet Type
Aggregating sales across commercial store formats (Outlet_Type) provides strategic insights into revenue concentration across store models.
Concentration analysis complements location, dispersion, shape, and heterogeneity by revealing how aggregate totals divide among constituent units. In BigMart Sales, this dimension highlights operational reliance on top product categories and store formats.
Suggested Exercises
Build a Pareto chart for Outlet_Location_Type and compare its concentration against Outlet_Type.
Compute the sales percentage accumulated by the top 20% of product categories.
Repeat concentration calculations using item counts per category instead of total monetary sales, comparing both distributions.
Provide a business summary evaluating whether sales structure is diversified or concentrated.