Извлечь выбросы из Seaborn Boxplot - PullRequest
0 голосов
/ 12 декабря 2018

Есть ли способ извлечь все выбросы после построения Seaborn Boxplot?Например, если я строю диаграмму для следующих данных

      client                total
1      LA                     1
2      Sultan                128
3      ElderCare              1
4      CA                     3
5      More                  900

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

2      Sultan                128
5      More                  900

Ответы [ 2 ]

0 голосов
/ 29 июля 2019

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

from matplotlib.cbook import boxplot_stats  
boxplot_stats(df.colname).pop(0)['fliers']
0 голосов
/ 12 декабря 2018

Seaborn использует matplotlib для обработки вычислений выбросов, то есть ключевой параметр whis передается в ax.boxplot.Конкретная функция, обеспечивающая расчет, описана здесь: https://matplotlib.org/api/cbook_api.html#matplotlib.cbook.boxplot_stats.. Вы можете использовать matplotlib.cbook.boxplot_stats для вычисления, а не для извлечения выбросов.В следующем фрагменте кода показан расчет и то же, что и на участке морского побережья:

import matplotlib.pyplot as plt
from matplotlib.cbook import boxplot_stats
import pandas as pd
import seaborn as sns

data = [
    ('LA', 1),
    ('Sultan', 128),
    ('ElderCare', 1),
    ('CA', 3),
    ('More', 900),
]
df = pd.DataFrame(data, columns=('client', 'total'))
ax = sns.boxplot(data=df)
outliers = [y for stat in boxplot_stats(df['total']) for y in stat['fliers']]
print(outliers)
for y in outliers:
    ax.plot(1, y, 'p')
ax.set_xlim(right=1.5)
plt.show()

enter image description here

...