Pareto Chart: How to Read One and Make It in Excel or Python
A Pareto chart is a bar chart with the categories sorted from largest to smallest, plus a line on a secondary axis that shows the cumulative percentage of the total. It answers one question: which few categories account for most of the problem, so you know what to fix first.
Quick answer: A Pareto chart shows bars for each category (count, cost, or time) in descending order, a cumulative-percentage line on a 0–100% right-hand axis, and usually a reference line at 80%. The categories up to and including the one where the cumulative line crosses 80% are the "vital few." In Excel 2016 or later, select the category and value columns and choose Insert > Insert Statistic Chart > Pareto. In older Excel, sort the data descending, add a cumulative % column, and build a column + line combo chart with the line on the secondary axis.
What is a Pareto chart?
A Pareto chart ranks categories of a problem by size and shows how quickly they add up to the whole. It has three parts, and each one does a specific job:
- Bars sorted in descending order: each bar is one category (a defect type, a complaint reason, a cause of downtime), measured on the left axis in the original units. The biggest category is always on the left.
- A cumulative-percentage line: each point shows the share of the total covered by that category plus every category to its left. It is plotted on a secondary axis that runs from 0% to 100%, so it always rises and always ends at 100%.
- An 80% reference line: a horizontal line on the percentage axis that marks the conventional cutoff for the "vital few."
The Pareto chart is one of the seven basic tools of quality associated with Kaoru Ishikawa, alongside the histogram, check sheet, control chart, scatter diagram, cause-and-effect (fishbone) diagram, and stratification (some lists substitute a flowchart). Outside manufacturing it works for anything you can count by category: support tickets by reason, revenue lost by churn reason, bugs by module, or delays by cause. For where it fits among other options, see the Excel chart types guide.
What is the 80/20 rule behind a Pareto chart?
The 80/20 rule, or Pareto principle, is the observation that a small share of causes often produces a large share of the effects, for example roughly 80% of defects coming from roughly 20% of defect types. The quality pioneer Joseph Juran popularized the idea and named it after the Italian economist Vilfredo Pareto, whose studies of income distribution in the late 1800s found wealth heavily concentrated in a small share of the population. Juran called the dominant causes the "vital few" and the rest the "trivial many," and later said he preferred "useful many," because the smaller causes still matter; they just are not where you start.
Is the 80/20 rule always true?
No. The 80/20 rule is a rule of thumb about concentration, not a law, and your data owes you nothing in particular. The real split might be 70/30, 90/10, or close to even. The Pareto chart exists precisely so you can see which one you have instead of assuming it.
- The two numbers don't need to sum to 100. 80 is a share of the effects and 20 is a share of the causes, which are two different totals. A 90/20 or 60/10 split is just as possible.
- A flat chart is a finding too. If the cumulative line is close to a straight diagonal, no category dominates, and a single targeted fix won't move the total much. That usually points to a process-wide problem.
- The categories shape the answer. Split one broad category into three and the chart changes. Merge several small ones and a new "vital few" appears. The result is only as meaningful as the categorization behind it.
- Frequency is not impact. The most common cause is not always the most expensive one. Rank by the measure you actually want to reduce, whether that is cost, downtime minutes, or revenue lost, not simply by how often something happens.
How do you read a Pareto chart?
Read it left to right, then find where the cumulative line crosses the 80% reference line. The categories up to and including that crossing point are the vital few, the smallest set of categories that together cover at least 80% of the total. Here is a worked example: 400 product returns in one quarter, grouped by return reason.
| Return reason | Returns | % of total | Cumulative % |
|---|---|---|---|
| Wrong size | 172 | 43% | 43% |
| Damaged in shipping | 108 | 27% | 70% |
| Not as described | 44 | 11% | 81% |
| Arrived late | 28 | 7% | 88% |
| Changed mind | 20 | 5% | 93% |
| Wrong item sent | 16 | 4% | 97% |
| Other | 12 | 3% | 100% |
| Total | 400 | 100% |
Plotted as a Pareto chart, this reads as follows:
- The first point on the line is the top category's share. Wrong size alone is 43% of all returns.
- The line crosses 80% at the third bar. After two reasons the total is 70%, and adding "Not as described" brings it to 81%. Those three reasons are the vital few: 3 of 7 categories cover 81% of returns.
- The line flattens after the crossing. Each of the remaining four reasons adds 7 points or less. That elbow, where steep gains turn into small ones, often matters more than the exact 80% mark.
- It is not literally 80/20. Three of seven categories is about 43% of the categories, not 20%. The concentration is still strong enough to act on: fixing sizing guidance and shipping packaging addresses 70% of returns.
Treat 80% as a convention, not a threshold with special meaning. A category that adds 2 points to push the line from 79% to 81% is not meaningfully more "vital" than the one after it. Look for where the gains drop off, and use the 80% mark as a starting point for that judgment.
How do I make a Pareto chart in Excel?
In Excel 2016 and later, including Microsoft 365, use the built-in Pareto chart type. It sorts the categories, calculates the cumulative percentage, and adds the secondary axis for you.
1. Put categories in one column and values in the next (e.g. A1:B8, with headers)
2. Select both columns
3. Insert > Insert Statistic Chart > Pareto (listed under Histogram)
or: Insert > Recommended Charts > All Charts > Histogram > Pareto
4. Add axis titles and a chart title that states the finding
You don't need to sort the data first; the chart sorts itself. If the same category name appears on several rows, Excel groups those rows and sums their values, so you can point it at raw rows as well as a summary table. The trade-off is limited control:
- No 80% reference line. The built-in Pareto can't be turned into a combo chart, so you can't add the reference line as a data series. The usual workaround is a drawn shape, which doesn't stay aligned when the chart is resized.
- Strict descending order. You can't pin an "Other" bar to the far right; it sorts wherever its value puts it.
- Numeric categories get binned. If the category column holds numbers (defect codes like 101, 102), Excel treats both columns as numeric data and bins it like a histogram. Store codes as text, such as D-101.
- Version limits. Excel 2013 and earlier can't display the chart, which matters if you send the workbook to someone on an old version.
How do I make a Pareto chart by hand in Excel?
Build it as a column + line combo chart when you need an 80% line, need "Other" kept last, or are on Excel 2013 or earlier. This takes about five minutes and gives you full control over the axes. Using the returns example in A1:B8:
1. Sort: select A1:B8 > Data > Sort > by Returns, Largest to Smallest
(then move "Other" to the bottom row if it didn't land there)
2. C1 "Cumulative %": C2 =SUM($B$2:B2)/SUM($B$2:$B$8) fill down to C8
3. D1 "80% line": D2 =0.8 fill down to D8
4. Format C2:D8 as Percentage
5. Select A1:D8
6. Insert > Insert Combo Chart > Create Custom Combo Chart
Returns = Clustered Column (primary axis)
Cumulative % = Line with Markers (Secondary Axis checked)
80% line = Line (Secondary Axis checked)
7. Right-click the right-hand axis > Format Axis > Bounds: Minimum 0, Maximum 1
Step 7 matters. Excel's autoscale often extends a percentage axis that tops out at exactly 100% to 120%, which squashes the line and moves the 80% mark. The mixed $B$2:B2 reference is what makes the cumulative sum grow one row at a time as you fill down. The combo chart dialog itself is covered in more detail in Excel combo chart: bars + line on a secondary axis.
For a traditional Pareto layout, also set the left axis maximum to the grand total (400 here). With the left axis running from 0 to the total and the right axis from 0% to 100%, the two scales are the same quantity in different units, so the first point of the line sits exactly on top of the first bar. This is one of the few cases where a dual axis is honest; the usual risks are covered in dual axis charts: use with caution. A typed maximum won't update if the data changes, so revisit it when you refresh the numbers.
How do I make a Pareto chart in Python with matplotlib?
Plot the sorted bars on one axis, create a twin axis with twinx() for the cumulative percentage, and draw the 80% line with axhline(). pandas handles the sorting and the cumulative sum:
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import PercentFormatter
returns = pd.Series({
"Wrong size": 172,
"Damaged in shipping": 108,
"Not as described": 44,
"Arrived late": 28,
"Changed mind": 20,
"Wrong item sent": 16,
"Other": 12,
})
# Sort descending, but keep "Other" as the last bar
ranked = returns.drop("Other").sort_values(ascending=False)
counts = pd.concat([ranked, returns[["Other"]]])
cum_pct = counts.cumsum() / counts.sum() * 100
fig, ax = plt.subplots(figsize=(9, 5))
ax.bar(counts.index, counts.values, color="C0")
ax.set_ylabel("Returns")
ax.set_ylim(0, counts.sum()) # left axis 0..total lines up with right axis 0..100%
ax2 = ax.twinx()
ax2.plot(counts.index, cum_pct.values, color="C1", marker="o")
ax2.axhline(80, color="gray", linestyle="--", linewidth=1)
ax2.set_ylim(0, 100)
ax2.yaxis.set_major_formatter(PercentFormatter())
ax2.set_ylabel("Cumulative % of returns")
plt.setp(ax.get_xticklabels(), rotation=30, ha="right")
ax.set_title("Three reasons account for 81% of returns")
fig.tight_layout()
plt.show()
PercentFormatter() assumes the values are on a 0–100 scale, which is why cum_pct is multiplied by 100. If your raw data is one row per event rather than a summary, start with df["reason"].value_counts() to get the counts. If you would rather have the bars fill the plot area, remove the ax.set_ylim(0, counts.sum()) line; the chart still reads correctly, but the line no longer starts at the top of the first bar.
Which method should I use?
Use Excel's built-in Pareto for a quick look, build the combo chart by hand when the chart goes into a report, and use matplotlib when the chart has to be regenerated from data on a schedule.
| Method | Sorting | 80% line | "Other" kept last | Works in |
|---|---|---|---|---|
| Excel built-in Pareto | Automatic | No | No | Excel 2016 and later, Microsoft 365 |
| Excel combo chart by hand | You sort the data | Yes, as a series | Yes | Any desktop Excel version |
| Python matplotlib | In code | Yes, axhline | Yes | Any Python environment |
Common mistakes with Pareto charts
Most bad Pareto charts are either the wrong chart for the data or a correct chart built on the wrong measure.
- Using it on ordered categories: months, age bands, and survey scales already have a natural order. Sorting them by value destroys that order; see how to sort chart data for when value sorting is and isn't right.
- Computing the cumulative line on unsorted data: a cumulative line over unsorted bars wobbles in slope and doesn't identify the vital few. Sort first, then accumulate.
- Leaving the percentage axis on autoscale: fix the secondary axis at 0% to 100%, or the 80% line and the curve's shape are distorted.
- A giant "Other" bar: if "Other" is one of the biggest categories, the categories are too coarse. Break it apart before drawing conclusions.
- Ranking by count when cost is what matters: a rare but expensive cause can outrank a frequent, cheap one. When in doubt, build the chart both ways.
- Treating 80/20 as the goal: the chart is for finding where the concentration is, not for confirming a ratio. Report the split you actually found.
- Comparing before and after on different scales: after a fix, rebuild the chart with the same categories and the same left-axis maximum so the reduction is visible, not rescaled away.
Pro Tip: Once you have the vital few, draw a second Pareto chart inside the top bar. For example, break "Wrong size" down by product line or size range. Nested Pareto charts turn a broad category into a specific, fixable cause, and they are usually where the actionable finding turns up.
โ Back to Visualization Tips