Шаг 112.
Язык Python. Визуализация данных. Библиотека Seaborn. ... . Визуализации распределений категориальных данных. Функция boxplot()

    На этом шаге мы рассмотрим назначение и примеры использования этой функции.

    Для начала разберёмся с тем, какую информацию мы можем получить от диаграммы boxplot. Её внешний вид представлен на рисунке 1.


Рис.1. Диаграмма boxplot

    На диаграмме отображена медиана (2-ой квартиль), 1-ый и 3-ий квартили; которые формируют межквартильный размах; если отложить вверх и вниз по полтора межквартильных размаха, то последние значения признака на этих промежутках формируют границы усов, значения вне этих границ будут определяться как выбросы, они отображаются отдельными точками.

    Помимо параметров общих для всех функций визуализации данных Seaborn (см. 86 шаг) и инструментов для работы с категориальными данными, функция boxplot() имеет ряд уникальных параметров:

fliersize: float, optional
Размер маркеров, с помощью которых обозначаются выбросы.

whis: float, optional
Величина межквартильного размаха, задающего длину усов диаграммы.

    Простроим диаграмму для набора данных mpg, отобразим распределение количества миль, которое автомобиль проезжает на одном галлоне топлива для США и Европы:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd

mpg = sns.load_dataset("mpg")
mpg_mod = mpg[mpg["origin"] != "japan"]
sns.boxplot(x="origin", y="mpg", data=mpg_mod)

plt.show()
Архив с файлом можно взять здесь.


Рис.2. Демонстрация работы функции boxplot()

    Сделаем цветовую заливку монотонной:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd

mpg = sns.load_dataset("mpg")
mpg_mod = mpg[mpg["origin"] != "japan"]
sns.boxplot(x="origin", y="mpg", color='g', data=mpg_mod)

plt.show()
Архив с файлом можно взять здесь.


Рис.3. Диаграмма boxplot с заливкой зелёного цвета

    Насыщенность цвета можно изменить через параметр saturation, по умолчанию это значение равно 0.75, т.е. изображение выводится с заниженной насыщенностью, как правило, такое решение даёт более приятное визуальное отображение цвета. Сравним, как будет выглядеть диаграмма при разных значениях параметра saturation:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd

mpg = sns.load_dataset("mpg")
mpg_mod = mpg[mpg["origin"] != "japan"]
plt.figure(figsize=(15, 5))
sat_list = [1, 0.75, 0.5, 0.25]
for i, s in enumerate(sat_list):
    plt.subplot(1, len(sat_list), i + 1)
    sns.boxplot(x="origin", y="mpg", saturation=s, data=mpg_mod)

plt.show()
Архив с файлом можно взять здесь.


Рис.4. Демонстрация работы с параметром saturation

    Ещё одним инструментом для изменения визуального оформления диаграммы является параметр linewidth, через него задаётся толщина линий "ящика с усами":

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd

mpg = sns.load_dataset("mpg")
mpg_mod = mpg[mpg["origin"] != "japan"]
plt.figure(figsize=(15, 5))
lw_list = [6, 3, 1]
for i, lw in enumerate(lw_list):
    plt.subplot(1, len(lw_list), i + 1)
    sns.boxplot(x="origin", y="mpg", linewidth=lw, data=mpg_mod)

plt.show()
Архив с файлом можно взять здесь.


Рис.5. Демонстрация работы с параметром linewidth

    Добавим дополнительное цветовое разделение по количеству цилиндров в двигателе автомобиля с помощью параметра hue:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd

mpg = sns.load_dataset("mpg")
mpg_mod = mpg[mpg["origin"] != "japan"]

sns.boxplot(x="origin", y="mpg", hue="cylinders", data=mpg_mod)

plt.show()
Архив с файлом можно взять здесь.


Рис.6. Демонстрация работы с параметром hue

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг