Коробчатые диаграммы (box plots), или как их еще называют, диаграммы размаха, являются мощным инструментом визуализации данных для анализа распределения и сравнения различных наборов данных. Matplotlib, являясь одной из основных библиотек Python для визуализации, предоставляет гибкие возможности для создания и настройки коробчатых диаграмм. В этой статье мы рассмотрим, как эффективно строить и сравнивать две коробчатые диаграммы в Matplotlib, используя различные методы и настройки.
Основы построения коробчатых диаграмм в Matplotlib
Что такое коробчатая диаграмма и для чего она нужна?
Коробчатая диаграмма представляет собой графическое представление распределения данных на основе пяти ключевых статистических показателей: минимальное значение, первый квартиль (Q1), медиана (Q2), третий квартиль (Q3) и максимальное значение. Диаграмма также отображает выбросы, которые могут указывать на необычные или аномальные значения в данных. Коробчатые диаграммы особенно полезны для:
-
Сравнения распределений нескольких наборов данных.
-
Выявления выбросов.
-
Оценки симметричности данных.
-
Визуализации разброса данных.
Первый boxplot: простой пример с использованием matplotlib.pyplot.boxplot()
Простейший способ построить коробчатую диаграмму в Matplotlib – использовать функцию matplotlib.pyplot.boxplot(). Ниже приведен пример кода:
import matplotlib.pyplot as plt
import numpy as np
data = np.random.normal(size=100)
plt.boxplot(data)
plt.title('Простая коробчатая диаграмма')
plt.ylabel('Значения')
plt.show()
Построение двух коробчатых диаграмм рядом: базовые методы
Использование plt.subplots() для создания двух графиков на одной фигуре
Чтобы построить две коробчатые диаграммы рядом, можно использовать функцию plt.subplots(), которая позволяет создать несколько графиков (subplots) на одной фигуре. Вот пример:
import matplotlib.pyplot as plt
import numpy as np
data1 = np.random.normal(loc=0, scale=1, size=100)
data2 = np.random.normal(loc=2, scale=1.5, size=100)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 5))
ax1.boxplot(data1, labels=['Data 1'])
ax1.set_title('Коробчатая диаграмма 1')
ax2.boxplot(data2, labels=['Data 2'])
ax2.set_title('Коробчатая диаграмма 2')
plt.show()
Размещение двух boxplot на одной оси: прямое сравнение данных
Другой способ – разместить две коробчатые диаграммы на одной оси для прямого сравнения. В этом случае данные для каждой диаграммы передаются в plt.boxplot() в виде списка:
import matplotlib.pyplot as plt
import numpy as np
data1 = np.random.normal(loc=0, scale=1, size=100)
data2 = np.random.normal(loc=2, scale=1.5, size=100)
plt.boxplot([data1, data2], labels=['Data 1', 'Data 2'])
plt.title('Сравнение двух коробчатых диаграмм')
plt.ylabel('Значения')
plt.xlabel('Наборы данных')
plt.show()
Расширенная настройка и кастомизация boxplot в Matplotlib
Настройка цветов, меток и заголовков диаграмм
Matplotlib предоставляет широкие возможности для настройки внешнего вида коробчатых диаграмм. Можно изменять цвета, метки осей, заголовки и другие параметры. Например:
import matplotlib.pyplot as plt
import numpy as np
data1 = np.random.normal(loc=0, scale=1, size=100)
data2 = np.random.normal(loc=2, scale=1.5, size=100)
boxprops = dict(linestyle='-', linewidth=2, color='blue')
medianprops = dict(linestyle='-', linewidth=2, color='red')
plt.boxplot([data1, data2],
labels=['Data 1', 'Data 2'],
boxprops=boxprops,
medianprops=medianprops,
patch_artist=True, # Заливка цветом
showmeans=True) # Отображение среднего значения
plt.title('Настроенные коробчатые диаграммы')
plt.ylabel('Значения')
plt.xlabel('Наборы данных')
plt.show()
Изменение внешнего вида коробки, усов и выбросов
Дополнительно можно настроить внешний вид коробки, усов и выбросов:
-
boxprops: свойства коробки. -
whiskerprops: свойства усов. -
flierprops: свойства выбросов. -
medianprops: свойства медианы.
Работа с данными из Pandas DataFrame и интерпретация результатов
Построение boxplot из Pandas DataFrame: интеграция с DataFrame.boxplot()
Интеграция Matplotlib с Pandas DataFrame делает процесс построения коробчатых диаграмм еще более удобным. Pandas DataFrame имеет встроенный метод boxplot(), который упрощает визуализацию данных:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# Создаем DataFrame
data = {'Data 1': np.random.normal(loc=0, scale=1, size=100),
'Data 2': np.random.normal(loc=2, scale=1.5, size=100)}
df = pd.DataFrame(data)
# Строим boxplot
df.boxplot()
plt.title('Коробчатые диаграммы из DataFrame')
plt.ylabel('Значения')
plt.show()
Интерпретация коробчатых диаграмм: выявление выбросов, сравнение распределений и анализ данных
Интерпретация коробчатых диаграмм включает в себя:
-
Выявление выбросов: Точки за пределами усов указывают на выбросы.
-
Сравнение распределений: Сравнение медиан, квартилей и разброса данных между разными наборами данных.
-
Оценка симметричности: Если медиана находится посередине коробки, распределение симметрично. Если смещена, распределение асимметрично.
-
Анализ разброса: Длина коробки (IQR) показывает разброс центральной половины данных. Усы указывают на разброс оставшихся значений, исключая выбросы.
Заключение
В этой статье мы рассмотрели, как строить и сравнивать две коробчатые диаграммы в Matplotlib для анализа данных. Мы изучили основные методы, такие как использование plt.subplots() и размещение диаграмм на одной оси, а также расширенные настройки и кастомизацию внешнего вида. Кроме того, рассмотрели интеграцию с Pandas DataFrame и интерпретацию результатов коробчатых диаграмм для выявления выбросов и сравнения распределений. Коробчатые диаграммы являются важным инструментом в арсенале аналитика данных, и Matplotlib предоставляет все необходимые средства для их эффективного использования.