Boxplot, он же ящик с усами. boxplot.. boxplot. data analysis.. boxplot. data analysis. data visualization.. boxplot. data analysis. data visualization. machine learning.. boxplot. data analysis. data visualization. machine learning. python.. boxplot. data analysis. data visualization. machine learning. python. анализ данных.. boxplot. data analysis. data visualization. machine learning. python. анализ данных. Визуализация данных.. boxplot. data analysis. data visualization. machine learning. python. анализ данных. Визуализация данных. Машинное обучение.. boxplot. data analysis. data visualization. machine learning. python. анализ данных. Визуализация данных. Машинное обучение. статистика.. boxplot. data analysis. data visualization. machine learning. python. анализ данных. Визуализация данных. Машинное обучение. статистика. ящик с усами.

Введение

Представьте, что вам нужно быстро сравнить распределения зарплат сотрудников разных отделов или оценить разброс результатов эксперимента. В таких ситуациях отличным выбором будет boxplot, он же “ящик с усами” – эффективный инструмент для выявления ключевых характеристик распределения, позволяющий быстро оценить медиану, разброс данных и обнаружить выбросы.

В этой статье мы подробно разберем, что такое boxplot, и почему его называют “ящиком с усами”. Вы узнаете:

  • Из каких элементов состоит boxplot

  • Как интерпретировать boxplot

  • Как использовать boxplot на практике с помощью Python, с примерами кода.

  • Плюсы и минусы работы с boxplot .

Будьте готовы погрузиться в мир визуализации данных и освоить один из самых полезных графиков для анализа данных – boxplot!

Основные Элементы Boxplot

Чтобы эффективно использовать boxplot для анализа данных, важно понимать значение каждого его элемента. От положения медианы до длины “усов” – все эти детали дают нам подсказки о характере распределения. Перейдем к детальному разбору составляющих boxplot.

На графиках ниже сверху представлен boxplot с подписанными элементами, снизу – график распределения с линиями, соответствующими элементам boxplot.

Распределение данных: ящик с усами и гистограмма

Распределение данных: ящик с усами и гистограмма

Медиана (Median) – 1

Медиана – это значение, которое разделяет упорядоченный набор данных на две равные части, ее еще можно назвать Q2. Половина данных лежит ниже медианы, а другая половина — выше. На графике распределения имеет зеленый цвет.  На графике boxplot это линия внутри прямоугольника.

Пример:

import numpy as np 

# Набор данных
data = np.array([10, 12, 15, 18, 20, 22, 25, 30, 40, 70])

# Вычисляем медиану
median = np.median(data)
  
print("Список : ", data)  
print("Медиана списка : ", median) 
Вывод

Вывод

Первый Квартиль (Q1) – 2

Первый квартиль — это значение, которое отделяет 25% наименьших значений в наборе данных. На графике распределения имеет красный цвет и лежит левее медианы (зеленый цвет).  На графике boxplot это нижняя граница прямоугольника.

Пример:

import numpy as np

# Набор данных
data = np.array([10, 12, 15, 18, 20, 22, 25, 30, 40, 70])

# Вычисляем Q1
Q1 = np.quantile(data, 0.25)

print("Список : ", data)  
print(f"Q1 (25-й процентиль): {Q1}")
Вывод

Вывод

Третий Квартиль (Q3) – 3

Третий квартиль— это значение, которое отделяет 25% наибольших значений в наборе данных. На графике распределения имеет красный цвет и лежит правее медианы (зеленый цвет).  На графике boxplot это верхняя граница прямоугольника.

Пример:

import numpy as np

# Набор данных
data = np.array([10, 12, 15, 18, 20, 22, 25, 30, 40, 70])

# Вычисляем Q3
Q3 = np.quantile(data, 0.75)

print("Список : ", data)  
print(f"Q3 (75-й процентиль): {Q3}")
Вывод

Вывод

Межквартильный Диапазон (IQR) – 4

Межквартильный диапазон — это разница между третьим и первым квартилями, то есть это прямоугольник, в котором лежит медиана, а по краям находятся Q1 и Q2. Он показывает разброс центральной половины данных. Внутри него лежит 50% данных.

Пример:

import numpy as np

# Набор данных
data = np.array([10, 12, 15, 18, 20, 22, 25, 30, 40, 70])

# Вычисляем IQR
Q1 = np.quantile(data, 0.25)
Q3 = np.quantile(data, 0.75)
IQR = Q3 - Q1

print("Список : ", data)  
print(f"IQR (Межквартильный Диапазон): {IQR}")
Вывод

Вывод

Выбросы (Outliers) – 5

Выбросы — это точки данных, которые выходят за пределы усов. Они являются необычно большими или маленькими по сравнению с остальными данными. На графике boxplot выбросы отображаются в виде отдельных точек за пределами усов.

Пример:

import numpy as np

# Набор данных
data = np.array([10, 12, 15, 18, 20, 22, 25, 30, 40, 70])

# Вычисляем Q1, Q3 и IQR
Q1 = np.quantile(data, 0.25)
Q3 = np.quantile(data, 0.75)
IQR = Q3 - Q1

# Определяем границы для выбросов
upper_outlier_threshold = Q3 + 1.5 * IQR
lower_outlier_threshold = Q1 - 1.5 * IQR

# Находим выбросы
outliers = data[(data < lower_outlier_threshold) | (data > upper_outlier_threshold)]


print("Список : ", data)
print(f"Верхняя граница выбросов: {upper_outlier_threshold}")
print(f"Нижняя граница выбросов: {lower_outlier_threshold}")
print(f"Выбросы: {outliers}")
Boxplot, он же ящик с усами - 6

Усы (Whiskers) – 6

Усы начинаются от краев прямоугольника (Q1 и Q3) и заканчиваются на самых дальних точках данных, которые не считаются выбросами. На графике распределения имеют синие цвета. На графике boxplot находятся по краям наборов данных, до выбросов.

Пример:

import numpy as np

# Набор данных
data = np.array([10, 12, 15, 18, 20, 22, 25, 30, 40, 70])

# Вычисляем Q1, Q3 и IQR
Q1 = np.quantile(data, 0.25)
Q3 = np.quantile(data, 0.75)
IQR = Q3 - Q1

# Определяем границы для выбросов
upper_outlier_threshold = Q3 + 1.5 * IQR
lower_outlier_threshold = Q1 - 1.5 * IQR

# Находим верхний ус (максимальное значение, не превышающее верхнюю границу)
upper_whisker = data[data <= upper_outlier_threshold].max()
# Находим нижний ус (минимальное значение, не меньшее нижней границы)
lower_whisker = data[data >= lower_outlier_threshold].min()

print("Список : ", data)
print(f"Верхний ус: {upper_whisker}")
print(f"Нижний ус: {lower_whisker}")
Boxplot, он же ящик с усами - 7

Вы могли заметить, что границы выбросов и границы усов не совпадают, почему же так может произойти?

Усы в boxplot показывают разброс фактических данных, а границы, вычисляемые с помощью 1.5 * IQR, – это критерий для определения выбросов. Усы “стремятся” до этих границ, но останавливаются на последнем значении данных, которое находится внутри этих границ. Теперь вы визуально и математически представляете себе из чего состоит boxplot. Это поможет вам в интерпретации результатов ваших анализов.

Кстати, boxplot часто называют “ящик с усами” из-за визуального сходства графика с ящиком (прямоугольник от Q1 до Q2), от которого отходят линии, напоминающие усы, отображающие разброс данных.

Как интерпретировать boxplot

Boxplot не просто показывает данные, он помогает понять их распределение. В этом разделе мы научимся использовать информацию, полученную из элементов boxplot, которые мы разобрали ранее.

Разберем, как это происходит, на конкретном примере.
Допустим мы работаем в сети дилерский центров, которые продают автомобили различных марок. Нам нужно оценить эффективность продаж каждой марки, а также выявить факторы, влияющие на объем продаж. У нас есть данные о количестве проданных автомобилей каждой марки за последние 2 года по месяцам в тысячах долларов.

Код ниже создает искусственные данные по нашей дилерской сети

import numpy as np
import pandas as pd

np.random.seed(42)

# Создаем искусственные данные о продажах автомобилей
data = {'Toyota': np.random.normal(loc=150, scale=25, size=24),
        'Honda': np.random.normal(loc=130, scale=20, size=24),
        'Ford': np.random.normal(loc=100, scale=30, size=24),
        'BMW': np.random.normal(loc=80, scale=15, size=24),
        'Tesla': np.random.normal(loc=90, scale=20, size=24)}
# Добавляем выбросы
data['Ford'][0] = 20.1
data['Ford'][1] = 30.312
data['Tesla'][1] = 150.112

# Создаем DataFrame
data = pd.DataFrame(data)
data.head()
Вывод

Вывод

Теперь отобразим эту информацию через boxplot, кстати, вы можете использовать для этого как библиотеку matplotlib, так и seaborn. Для того, чтобы использовать seaborn, закомментируйте 5 строку и раскомментируйте 6.

import seaborn as sns
import matplotlib.pyplot as plt

plt.figure(figsize=(12, 7))  # Увеличим размер графика для лучшей читаемости
plt.boxplot(data, labels=data.columns) # matplotlib
# sns.boxplot(data=data)  # seaborn
plt.title("Сравнение продаж автомобилей разных марок (за 24 месяца)")
plt.ylabel("Количество проданных автомобилей")
plt.grid(True)
plt.show()
Вывод

Вывод

Анализируя полученные boxplot, мы можем сделать следующие выводы:

  • Нахождение центра распределения:

    • Toyota демонстрирует  самые высокие медианные продажи, что указывает на её лидерство по объёму реализации. .

    • BMW и Tesla  имеют наименьшие медианные продажи в нашей дилерской сети.

    • Honda и Ford  показывают промежуточные значения.

    Итог: с помощью медианы мы выяснили, какие марки наиболее и наименее прибыльны. Высокие медианные продажи Toyota указывают на её стабильную популярность. Низкие показатели BMW и Tesla могут быть связаны с более высокой ценой или ориентацией на узкий сегмент рынка. Для увеличения продаж этих марок целесообразно провести анализ целевой аудитории и разработать индивидуальные маркетинговые стратегии, например, сфокусироваться на преимуществах конкретных моделей или предложить специальные условия для привлечения новых клиентов.

  • Оценка разброса данных:

    • Ford имеет самый широкий IQR, что говорит о наибольшей волатильности продаж среди представленных марок

    • BMW демонстрирует наименьший IQR.

    Итог: с помощью IQR мы заметили различия в волатильности. Высокий IQR для Ford указывает на нестабильность продаж, что может быть связано с сезонными акциями, изменениями в модельном ряду или другими факторами. Необходим анализ внутренних и внешних факторов, влияющих на продажи Ford. Низкий IQR для BMW в сочетании с относительно низкими медианными продажами подтверждает стабильность продаж, но также может свидетельствовать об ограниченной аудитории, лояльной бренду. Чтобы расширить клиентскую базу, можно рассмотреть варианты проведения тест-драйвов, участие в автомобильных выставках и организацию специальных мероприятий для потенциальных покупателей.

  • Асимметрия распределения:

    • Ford демонстрирует значительную левостороннюю асимметрию. Медиана немного смещена в правую (верхнюю) часть прямоугольника, а левый ус намного длиннее правого.

    • Tesla демонстрирует правостороннюю асимметрию. Это вызвано выбросом в виде одного месяца с очень высокими продажами.

    Итог: с помощью усов, медианы, Q1 и Q2 мы нашли асимметрию в данных. Для Ford 
    это объясняется наличием выбросов в виде двух месяцев с очень низкими продажами (20 и 30 автомобилей). Необходимо установить причины столь значительного падения продаж в эти месяцы. Правосторонняя асимметрия продаж Tesla указывает на периодические всплески спроса. Для выяснения причин этих всплесков необходимо проанализировать маркетинговые кампании, сезонность, выход новых моделей или новости об инновационных технологиях Tesla, и использовать эту информацию для планирования будущих маркетинговых активностей

  • Выявление выбросов:

    • Honda и Tesla имеет выбросы в верхней части

    • BMW и Tesla имеет выбросы в нижней части

    Итог: с помощью анализа выбросов мы нашли потенциальные точки роста, для следующий марок: Honda, BMW, Tesla. Наличие выбросов в верхней части для Honda и Tesla говорит о месяцах с аномально высокими продажами, возможно, связанных с успешными маркетинговыми кампаниями или запуском новых моделей. Выбросы в нижней части для Ford указывают на месяцы, когда продажи были значительно ниже среднего, что может быть вызвано проблемами с поставками, отзывами продукции или другими негативными факторами. Анализ этих конкретных месяцев поможет понять причины колебаний и принять меры для минимизации негативного влияния в будущем.

  • Сравнение форм распределений:

    • Распределение продаж Ford существенно отличается от других марок из-за асимметрии и выбросов.

    • Toyota и Honda демонстрируют более симметричные распределения.

    • BMW и Tesla также имеют довольно симметричное распределение, но в них присутствует значительное количество выбросов


    Итог: Форма распределения продаж автомобилей значительно различается между марками. Ford характеризуется нестабильностью (асимметрия и выбросы), Toyota и Honda демонстрируют стабильность (симметрия), а BMW и Tesla показывают умеренную стабильность, осложненную выбросами, требующими дальнейшего анализа.

  • Оценка перекрытия данных:

    • Распределения продаж Toyota и Honda перекрываются в значительной степени.

    • BMW и Tesla меньше перекрываются с другими марками.

    Итог: Значительное перекрытие распределений продаж Toyota и Honda может указывать на конкуренцию за схожую аудиторию, в то время как меньшее перекрытие BMW и Tesla с другими марками предполагает ориентацию на более специфические сегменты рынка.

Опираясь на этот анализ, мы можем предпринять следующие шаги:

  • Для всех марок: Изучить рыночные тенденции и конкурентную среду, улучшить обслуживание клиентов и оптимизировать управление запасами. Сегментировать клиентов и персонализировать предложения.

  • Для Toyota: Укрепить лидерство, используя новые модели и программы лояльности.

  • Для Honda: Дифференцироваться от Toyota, привлекая более специфическую аудиторию.

  • Для Ford: Исследовать причины нестабильности продаж и разработать план стабилизации.

  • Для BMW: Расширить клиентскую базу, сохраняя престижность бренда.

  • Для Tesla: Повторить успех пиковых продаж путем анализа и планирования маркетинговых мероприятий

Этот пример показывает, как boxplot может быть полезен в бизнес-анализе для оценки эффективности продаж, выявления проблемных зон и разработки стратегий по улучшению результатов.

Таким образом, корректно интерпретируя boxplot, мы можем получить множество полезной информации о наших данных.

Однако, помимо очевидных плюсов boxplot имеет и ряд минусов.

Плюсы и минусы Boxplot

Как и любой инструмент boxplot имеет свои ограничения. В этом разделе мы поймем в каких ситуациях boxplot будет отличным выбором, а когда лучше использовать другие методы.

Плюсы:

  • Наглядное представление основных статистик: Boxplot быстро демонстрирует медиану, разброс (IQR) и потенциальные выбросы. В нашем примере с продажами автомобилей мы сразу получили общее представление о каждой марке.

  • Сравнение наборов данных: Boxplot отлично подходит для сравнения нескольких распределений на одном графике, что позволило нам удобно сопоставить данные о продажах 5 разных марок.

  • Выявление выбросов: Boxplot наглядно выделяет выбросы, которые могут указывать как на ошибки в данных, так и на интересные аномалии (например, неожиданные всплески продаж). В нашем анализе это помогло быстро найти аномальные значения для Honda, BMW и Tesla.

  • Простота интерпретации: Boxplot относительно прост для понимания даже для человека без глубоких знаний статистики. Он позволяет быстро выявить ключевые особенности распределения и сформулировать начальные гипотезы.

  • Компактность: Boxplot позволяет удобно сравнивать несколько категорий данных на одном графике, не перегружая визуализацию.

  • Устойчивость к выбросам: Boxplot, основанный на медиане и IQR, менее чувствителен к выбросам, чем методы, использующие среднее арифметическое и стандартное отклонение. Это может быть полезно, когда необходимо получить общее представление о данных, не слишком акцентируя внимание на аномальных значениях.

Минусы:

  • Ограниченная информация о форме распределения: В отличие от гистограмм или графиков плотности, boxplot не отображает детали формы распределения (например, количество пиков). Поэтому его следует использовать в сочетании с другими визуализациями, если требуется более глубокий анализ формы распределения.

  • Не подходит для номинальных данных: Boxplot предназначен для числовых данных. Хотя номинальные данные иногда можно преобразовать в числовые, но это не всегда целесообразно и может привести к потере информации.

  • Чувствительность к масштабу: При значительном разбросе значений у разных групп, boxplot может выглядеть сжатым и затруднять сравнение, особенно если есть выбросы. В таких случаях может потребоваться логарифмическое преобразование данных или использование других методов масштабирования.

  • Субъективная интерпретация выбросов: Boxplot лишь выделяет потенциальные выбросы, но не определяет их природу. Необходимо дополнительное исследование, чтобы установить, являются ли они ошибками, аномальными, но реальными значениями, или требуют особого внимания.

  • Зависимость от алгоритма построения: Точные значения границ “усов” и определения выбросов могут незначительно отличаться в зависимости от используемого программного обеспечения или библиотеки из-за различий в алгоритмах вычисления квартилей (Q1 и Q3). Поэтому важно использовать один и тот же инструмент для сравнения boxplot и осознавать возможные погрешности.

По итогу, при работе с boxplot, важно учитывать его ограничения и при необходимости использовать в сочетании с другими методами визуализации и анализа данных для получения более полной и точной картины. В сложных ситуациях, где важны детали формы распределения или точная интерпретация выбросов, следует отдавать предпочтение другим подходам.

Заключение

Boxplot – это простой, но полезный инструмент визуализации, позволяющий быстро выявлять закономерности, сравнивать показатели и формулировать гипотезы. Однако, как и при использовании любого метода визуализации, важно учитывать его ограничения и подтверждать выводы дополнительным анализом.

Весь используемый код в статье вы можете найти по ссылке: articles/boxplot at main · PavelShunkevich/articles

Автор: pavel_shunkevich

Источник

Рейтинг@Mail.ru
Rambler's Top100