Диаграмма Парето — это тип диаграммы, которая отображает упорядоченную частоту категорий вместе с кумулятивной частотой категорий.

В этом руководстве представлен пошаговый пример того, как создать диаграмму Парето в Python.
Шаг 1: Создайте данные
Предположим, мы проводим опрос, в котором мы просим 350 разных людей определить их любимую марку хлопьев среди марок A, B, C, D и E.
Мы можем создать следующий кадр данных pandas для хранения результатов опроса:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'count': [97, 140, 58, 6, 17, 32]})
df.index = ['B', 'A', 'C', 'F', 'E', 'D']
#sort DataFrame by count descending
df = df.sort_values (by='count', ascending= False )
#add column to display cumulative percentage
df['cumperc'] = df['count']. cumsum ()/df['count']. sum ()\*100
#view DataFrame
df
count cumperc
A 140 40.000000
B 97 67.714286
C 58 84.285714
D 32 93.428571
E 17 98.285714
F 6 100.000000
Шаг 2: Создайте диаграмму Парето
Мы можем использовать следующий код для создания диаграммы Парето:
import matplotlib.pyplot as plt
from matplotlib. ticker import PercentFormatter
#define aesthetics for plot
color1 = 'steelblue '
color2 = 'red '
line_size = 4
#create basic bar plot
fig, ax = plt.subplots()
ax.bar (df.index , df['count'], color=color1)
#add cumulative percentage line to plot
ax2 = ax.twinx ()
ax2.plot(df.index , df['cumperc'], color=color2, marker=" D", ms=line_size)
ax2. yaxis.set_major_formatter (PercentFormatter())
#specify axis colors
ax.tick_params (axis='y', colors=color1)
ax2. tick_params (axis='y', colors=color2)
#display Pareto chart
plt.show()

По оси X отображаются различные бренды, упорядоченные от самой высокой до самой низкой частоты.
На левой оси Y показана частота каждого бренда, а на правой оси Y показана кумулятивная частота брендов.
Например, мы можем видеть:
- На бренд А приходится около 40% всех ответов на опросы.
- На бренды A и B приходится около 70% всех ответов на опрос.
- На бренды A, B и C приходится около 85% всех ответов на опрос.
И так далее.
Шаг 3. Настройте диаграмму Парето (необязательно)
Вы можете изменить цвета столбцов и размер кумулятивной процентной линии, чтобы диаграмма Парето выглядела так, как вам хочется.
Например, мы можем сделать полосы розовыми, а линию сделать фиолетовой и чуть толще:
import matplotlib.pyplot as plt
from matplotlib. ticker import PercentFormatter
#define aesthetics for plot
color1 = 'pink '
color2 = 'purple '
line_size = 6
#create basic bar plot
fig, ax = plt.subplots()
ax.bar (df.index , df['count'], color=color1)
#add cumulative percentage line to plot
ax2 = ax.twinx ()
ax2.plot(df.index , df['cumperc'], color=color2, marker=" D", ms=line_size)
ax2. yaxis.set_major_formatter (PercentFormatter())
#specify axis colors
ax.tick_params (axis='y', colors=color1)
ax2. tick_params (axis='y', colors=color2)
#display Pareto chart
plt.show()

Дополнительные ресурсы
В следующих руководствах объясняется, как создавать другие распространенные визуализации в Python:
Как сделать кривую нормального распределения в Python
Как создать график Ogive в Python
Как создать график ствола и листа в Python