python:matplotlib 箱线图(boxplot)参数及分析详解

本文深入解析箱线图的统计学意义,包括上下四分位数、中位数及异常值的概念,并通过matplotlib和seaborn库演示如何在Python中绘制箱线图,展示数据分散情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python画箱线图boxplot目的是为了方面通过图的形式查看数据分散情况。用matplotlib画箱线图很简单,但是我们更重要的是怎么去看箱线图。

箱线图统计学知识

上限值:Q1-1.5×IQR
上相邻值:距离上限值最近的值
须线:上下分位数各自与上下相邻值的距离
上四分位数(Q1):一组数据按顺序排列,从小至大第25%位置的数值
中位数:一组数据按顺序排列,从小至大第50%位置的数值
中位线(IQR):Q3-Q1上四分位数至下四分位数的距离
下四分位数(Q3):一组数据按顺序排列,从小至大第75%位置的数值
下相邻值:距离下限值最近的值
下限值:Q3+1.5×IQR
离群值(异常值):一组数据中超过上下限的真实值
在这里插入图片描述
对照正态分布图来参考:
在这里插入图片描述
如果中位线往右偏移,那么数据呈左偏分布;
如果中位线往左偏移,那么数据呈右偏分布;

matplotlib画图箱线图

案例数据链接点击下载
在这里插入图片描述

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']

data=pd.read_csv('datingTestSet2.txt',sep='\t')
print(data.shape)
data.head()
>>>
飞行里程	视频游戏消耗时间	消费冰淇淋公斤数	感兴趣程度
0	40920	8.326976	0.953952	3
1	14488	7.153469	1.673904	2
2	26052	1.441871	0.805124	1
3	75136	13.147394	0.428964	1
4	38344	1.669788	0.134296	1
---------------------------------------------------
group=data.感兴趣程度.unique()
def group():
    df=[]
    group=data.感兴趣程度.unique()
    for x in group:
        a=data.飞行里程[data.感兴趣程度==x]
        df.append(a)
    return df
box1,box2,box3=group()[0],group()[1],group()[2]

#给各箱线图添加数据标签
def xticks():
    for x in range(len(group())):
        mx=int(group()[x].describe()['max'])
        mi=int(group()[x].describe()['min'])
        a=int(group()[x].describe()['25%'])
        b=int(group()[x].describe()['50%'])
        c=int(group()[x].describe()['75%'])
        up=int(a-1.5*(c-a))
        down=int(c+1.5*(c-a))
        xtext=[mi,up,a,b,c,mx,down]
        for y in xtext:
            plt.text(y-500,x+1.25,y,fontsize=11.1)

#绘制箱线图并设置需要的参数
plt.figure(figsize=(15,7))
plt.boxplot([box1,box2,box3],vert=False,showmeans=False)
plt.xticks(np.arange(0,100000,step=8000))
plt.ylabel('好感程度',fontsize=20.0)
plt.title('飞行里程',fontsize=20.0)
plt.yticks(fontsize=15.0)
xticks()
plt.show()

seaborn画图

在这里插入图片描述

import seaborn as sns
plt.figure(figsize=(15,7))
sns.boxplot('飞行里程','感兴趣程度',data=df,orient='h')
plt.ylabel('好感程度',fontsize=20.0)
plt.xlabel('飞行里程',fontsize=20.0)
plt.yticks(fontsize=15.0)
plt.show()
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值