【转】箱线图

作者:海致BDP
链接:https://www.zhihu.com/question/36172806/answer/308908220
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

箱线图判断异常值的标准以四分位数和四分位距为基础,四分位数具有一定的耐抗性,多达25%的数据可以变得任意远而不会很大地扰动四分位数,所以异常值不会影响箱形图的数据形状,箱线图识别异常值的结果比较客观。由此可见,箱线图在识别异常值方面有一定的优越性。

1、下四分位数Q1

(1)确定四分位数的位置。Qi所在位置=i(n+1)/4,其中i=1,2,3。n表示序列中包含的项数。

(2)根据位置,计算相应的四分位数。

例中:

Q1所在的位置=(14+1)/4=3.75,

Q1=0.25×第三项+0.75×第四项=0.25×17+0.75×19=18.5;

2、中位数(第二个四分位数)Q2

中位数,即一组数由小到大排列处于中间位置的数。若序列数为偶数个,该组的中位数为中间两个数的平均数。

例中:

Q2所在的位置=2(14+1)/4=7.5,

Q2=0.5×第七项+0.5×第八项=0.5×25+0.5×28=26.5

3、上四分位数Q3

计算方法同下四分位数。

例中:

Q3所在的位置=3(14+1)/4=11.25,

Q3=0.75×第十一项+0.25×第十二项=0.75×34+0.25×35=34.25。

4、上限

上限是非异常范围内的最大值。

首先要知道什么是四分位距如何计算的?

四分位距IQR=Q3-Q1,那么上限=Q3+1.5IQR

5、下限

下限是非异常范围内的最小值。

下限=Q1-1.5IQR

 

BDP个人版箱形图效果:

### 如何使用 Seaborn 和 Matplotlib 绘制箱线图 以下是通过 Python 的 `Seaborn` 库和 `Matplotlib` 库生成箱线图的具体方法。此过程涉及加载数据集、调用绘图函数以及自定义图表属性。 #### 使用 Seaborn 创建箱线图 Seaborn 是一个基于 Matplotlib 构建的数据可视化库,提供了一个更高层次的接口用于绘制复杂的统计图形[^3]。下面是一个完整的代码示例: ```python import seaborn as sns import matplotlib.pyplot as plt # 加载内置数据集 'tips' data = sns.load_dataset("tips") # 创建箱线图 sns.boxplot(x="day", y="total_bill", data=data) # 设置坐标轴标签和标题 plt.xlabel('日期', fontsize=12) # X 轴标签 plt.ylabel('总账单金额 ($)', fontsize=12) # Y 轴标签 plt.title('不同日期下的总账单分布 (箱线图)', fontsize=14) # 图表标题 # 显示图像 plt.show() ``` 上述代码展示了如何利用 Seaborn 中的 `boxplot()` 函数快速生成箱线图,并设置了中文标签以便更好地理解图表含义。 --- #### 自定义箱线图样式 除了基本功能外,还可以进一步调整箱线图的颜色和其他视觉效果。例如,可以通过参数传递实现分组对比分析: ```python import seaborn as sns import matplotlib.pyplot as plt # 数据准备 data = sns.load_dataset("tips") # 添加分类变量进行子群比较 sns.boxplot(x="day", y="total_bill", hue="sex", data=data, palette="Set3") # 增强可读性的额外配置 plt.legend(title='性别') plt.xlabel('星期几', fontsize=12) plt.ylabel('消费总额 ($)', fontsize=12) plt.title('按性别划分的不同天数上的消费情况', fontsize=14) # 展现最终结果 plt.show() ``` 在此扩展版本中,引入了 `hue` 参数以区分不同的子群体(如男性 vs 女性),并应用了预设配色方案 `"Set3"` 来增强美观度。 --- #### 结合 Matplotlib 进一步优化 虽然 Seaborn 提供了许多便捷的功能,但在某些情况下可能仍需借助 Matplotlib 完成更多细节控制。比如旋刻度标签或更改字体大小等操作都可以通过 Matplotlib 实现: ```python import seaborn as sns import matplotlib.pyplot as plt # 初始化数据源 data = sns.load_dataset("tips") # 制作基础箱线图 sns.boxplot(x="tip", y="day", data=data, orient="h") # 水平方向展示 # 修改布局与风格 plt.xticks(fontsize=10) plt.yticks(fontsize=10) plt.gca().set_title('每日小费金额分布', fontdict={'fontsize': 16}) plt.gca().invert_yaxis() # 可选:反Y轴顺序使周日位于顶部 # 输出图片 plt.tight_layout() plt.show() ``` 这段脚本不仅实现了水平排列的箱线图,还包含了对文字尺寸及标题样式的精细调节[^2]。 --- ### 总结 以上介绍了三种方式来构建具有代表性的箱线图实例,分别侧重于基础绘图、多维度数据分析以及综合美化技巧上。每种方法均体现了 Seaborn 高效简洁的特点及其与 Matplotlib 协同工作的能力[^1].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值