Pareto Chart: How to Read One and Make It in Excel or Python

โฑ๏ธ 8 min read ๐Ÿ“Š Visualization

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:

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.

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 reasonReturns% of totalCumulative %
Wrong size17243%43%
Damaged in shipping10827%70%
Not as described4411%81%
Arrived late287%88%
Changed mind205%93%
Wrong item sent164%97%
Other123%100%
Total400100%

Plotted as a Pareto chart, this reads as follows:

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:

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.

MethodSorting80% line"Other" kept lastWorks in
Excel built-in ParetoAutomaticNoNoExcel 2016 and later, Microsoft 365
Excel combo chart by handYou sort the dataYes, as a seriesYesAny desktop Excel version
Python matplotlibIn codeYes, axhlineYesAny 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.

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