matplotlib【3】--箱线图

箱线图一般用来展现数据的分布(如上下四分位值、中位数等),同时,也可以用箱线图来反映数据的异常情况。

饼图函数:plt.boxplot()

boxplot函数设置:

plt.boxplot(x, notch=None, sym=None, vert=None, 
             whis=None, positions=None, widths=None, 
             patch_artist=None, meanline=None, showmeans=None, 
             showcaps=None, showbox=None, showfliers=None, 
             boxprops=None, labels=None, flierprops=None, 
             medianprops=None, meanprops=None, 
             capprops=None, whiskerprops=None)

x:指定要绘制箱线图的数据;

notch:是否是凹口的形式展现箱线图,默认非凹口;

sym:指定异常点的形状,默认为+号显示;

vert:是否需要将箱线图垂直摆放,默认垂直摆放;

whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差;

positions:指定箱线图的位置,默认为[0,1,2…];

widths:指定箱线图的宽度,默认为0.5;

patch_artist:是否填充箱体的颜色;

meanline:是否用线的形式表示均值,默认用点来表示;

showmeans:是否显示均值,默认不显示;

showcaps:是否显示箱线图顶端和末端的两条线,默认显示;

showbox:是否显示箱线图的箱体,默认显示;

showfliers:是否显示异常值,默认显示;

boxprops:设置箱体的属性,如边框色,填充色等;

labels:为箱线图添加标签,类似于图例的作用;

filerprops:设置异常值的属性,如异常点的形状、大小、填充色等;

medianprops:设置中位数的属性,如线的类型、粗细等;

meanprops:设置均值的属性,如点的大小、颜色等;

capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等;

whiskerprops:设置须的属性,如颜色、粗细、线的类型等;

案例:taitannic:不同等级仓位的年龄箱线图

  • 整舱人的年龄箱线图
#读取Tatannic数据集
#因为数据集存放在中文文件夹下,需要y用open打开这个数据集,再去pd解析
file=open(r'E:\李明霞\猴子社群\新建文件夹\数据分析入门(Python)\机器学习(入门)\3.泰坦尼克号\train.csv')
titanic=pd.read_csv(file)
#检查是否读取成功
#titanic.head()
#检查年龄是否有缺失
#any(titanic.Age.isnull())
titanic.info()
#删除缺失年龄的数据行
titanic.dropna(subset=['Age'],inplace=True)

#设置图形的显示风格
plt.style.use('ggplot')

#设置中文和符号显示正常
plt.rcParams['font.sans-serif']=['Microsoft YaHei']
plt.rcParams['axes.unicode_minus']=False

#绘图:整体乘客的年龄箱线图
plt.boxplot(
    x=titanic.Age,#指定绘图数据
    patch_artist=True,#要求用自定义颜色填充盒型图,默认白色填充
    showmeans=True,#以点的形式显示均值
    boxprops={'color':'black','facecolor':'#9999ff'},#设置箱体属性,填充色和边框色
    flierprops={'marker':'o','markerfacecolor':'red','color':'black'},#设置异常值属性,点的形状、填充颜色和边框色
    meanprops={'marker':'D','markerfacecolor':'indianred'},#设置均值点的属性,点的颜色和形状
    medianprops={"linestyle":'--','color':'orange'}#设置中位数线的属性,线的类型和颜色
)
#设置y轴的范围
plt.ylim(0,85)

#去除箱线图的上边框和右边框的刻度标签
plt.tick_params(top='off',right='off')

#显示图形
plt.show()

在这里插入图片描述

分析:从图中可以看出,乘客的平均年龄是在30岁,有四分之一的人低于20岁,有四分之一的人是超过38岁,有一半的人是在20岁和38岁之间。从均值(红色的菱形)略高于中位数(黄色虚线),说明年龄是有偏的,并且是右偏;同时红色是异常值,这些异常值是在64岁以上。

  • 不同舱年龄箱线图
按舱级排序,为了后面正常显示分组盒型图的顺序
titanic.sort_values(by='Pclass',inplace=True)

#通过for循环将不同仓位的年龄人群分别存储到列表Age变量中
Age=[]
levels=titanic.Pclass.unique()
for Pclass in levels:
    Age.append(titanic.loc[titanic.Pclass==Pclass,'Age'])

#绘图
plt.boxplot(
    x=Age,
    patch_artist=True,
    labels=['一等舱','二等舱','三等舱'],#添加具体的标签名称
    boxprops={'color':'black','facecolor':'#9999ff'},
    flierprops={'marker':'o','markerfacecolor':'red','color':'black'},#设置异常值属性,点的形状、填充颜色和边框色
    meanprops={'marker':'D','markerfacecolor':'indianred'},#设置均值点的属性,点的颜色和形状
    medianprops={"linestyle":'--','color':'orange'}#设置中位数线的属性,线的类型和颜色

)

plt.show()

在这里插入图片描述

分析:从上述中,可以看出一个明显的趋势,就是舱位等级越高的乘客,他们的年龄越高,三种舱位的平均年龄是38,30,25,说明年龄偏大一点,他们的经济承受能力越强,所买的仓位的等级可能就会越高一些。同时,在二等舱和三等舱,乘客的年龄上也存在异常用户。

猜你喜欢

转载自blog.csdn.net/qq_42787271/article/details/83042219
今日推荐