绘制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
答案 0 :(得分:1)
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()
答案 1 :(得分:0)
下面的代码将为您提供一系列离群值,使用它们可以从数据框中提取值。
from matplotlib.cbook import boxplot_stats
boxplot_stats(df.colname).pop(0)['fliers']