Box Whisker Plot с использованием seaborn не показывает коробку и усы - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь построить коробку и усы с морским рожком.С моим минимальным значением «-200 000» и максимальным значением «1 400 000».Оба из них являются выбросами.Однако я получаю только график, немного похожий на график рассеяния.

Ниже мой код

import pandas as pd
import numpy as np
import xlrd

import matplotlib.pyplot as plt
import seaborn as sns

pi_analysis = pd.read_excel(r'C:\PI\PI Analysis.xlsx',
                           sheet_name = 'Raw Data'
                           , header = 0
                           )
print(pi_analysis)
group_segement= pi_analysis[['Segment', 'TOTAL AMOUNT']].groupby('Segment').sum()

print(group_segement)
group_segement_mean= pi_analysis[['Segment', 'TOTAL AMOUNT']].groupby('Segment')
group_segement_mean.mean().head()
group_segement_mean.describe()

sns.boxplot(x="Segment", y="TOTAL AMOUNT",data=pi_analysis)

enter image description here

Прилагаетсяобраз.Попробовал изменить доступ.Это не работает.Любые предложения, как отобразить коробку и усы.

Новое изображение после изменения масштаба.

enter image description here

Это раздел кода.Однако это все еще не дает мне полное представление.

ax=sns.boxplot(x='Segment',y='TOTAL AMOUNT',data=pi_analysis)
ax.set_ylim(-10*10^8,10*10^8)

С уважением, Рен.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

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

Боксы Seaborn примут аргумент matplotlib:

showfliers=False

В результате получатся графики только ящика и усов, а выбросы не показаны.

Последняя строка вашего кода будет:

sns.boxplot(x="Segment", y="TOTAL AMOUNT",data=pi_analysis, showfliers=False) 
0 голосов
/ 27 ноября 2018

Как @ g-anderson упомянул в своем комментарии, там есть коробочный сюжет, он слишком мал, чтобы вы могли его увидеть.Рассмотрим следующий код:

d = np.random.random(size=(100,))
d[0] = 100
d[-1] = -100

fig, ax = plt.subplots()
sns.boxplot(data=d, orient='vertical')

enter image description here

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

fig, ax = plt.subplots()
sns.boxplot(data=d, orient='vertical')
ax.set_ylim(-1,2)

enter image description here

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