График Парето представляет собой отсортированную гистограмму в порядке убывания, которая показывает совокупный итог в виде линии. Он объединяет информацию гистограммы. Графики основаны на правиле «80/20». Это правило гласит, что около 80% проблем являются следствием 20% причин. Это правило также называется «жизненно малое и тривиальное много». Опять же, идея состоит в том, что вы можете сосредоточиться на нескольких жизненно важных коренных причинах проблемы и игнорировать многие тривиальные.
На нашем примере с морженым мы видим, что шоколад, мята и ваниль составляют 81% наших продаж. С точки зрения рекламы мы могли бы сделать какую-то скидку, связанную с этими вкусами, чтобы еще больше их увеличить. Надеюсь, вы видите преимущества использования этого графика вместо отдельной гистограммы и круговой диаграммы.
Code 1
(.env) boris@boris-All-Series:~/PARETO$ cat plotPareto3.py
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import PercentFormatter
"""
Предположим, мы проводим опрос, в котором мы попросим 3010 разных людей определить их любимую марку мороженого среди марок 'Chocolate','Vanilla','Mint','Swirl','Nut','Plump'.
Создадим следующий кадр данных pandas для хранения результатов опросa
"""
df = pd.DataFrame({'count': [1000, 650, 800, 450, 75, 35]})
df.index = ['Chocolate','Vanilla','Mint','Swirl','Nut','Plump']
# sort DataFrame by count descending
df = df.sort_values(by='count', ascending=False)
# добавим столбец для отображения совокупного процента
df['cumperc'] = df['count'].cumsum()/df['count'].sum()*100
print(df)
# matplolib code для создания диаграммы Парето
color1 = 'steelblue'
color2 = 'red'
line_size = 4
# создадим базовый столбчатый график
fig, ax = plt.subplots()
ax.bar(df.index, df['count'], color=color1)
# добавим кумулятивную процентную линию на график
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)
plt.show()
No comments:
Post a Comment