前文回看:
【Python菜鸟进阶大神】Matplotlib数据可视化001:基础API汇总&散点图
【Python菜鸟进阶大神】Matplotlib数据可视化002:折线图
【Python菜鸟进阶大神】Matplotlib数据可视化003:条形图
【Python菜鸟进阶大神】Matplotlib数据可视化004:饼图
【Python菜鸟进阶大神】Matplotlib数据可视化005:直方图
箱线图又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。
箱线图API:
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:设置须的属性,如颜色、粗细、线的类型等;
# 引入模块import numpy as npimport pandas as pdimport matplotlib as mplimport matplotlib.pyplot as plt# 中文乱码和坐标轴负号的处理plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']plt.rcParams['axes.unicode_minus'] = False# 加载数据path="C:/Users/Administrator/Desktop/exercise_data/train.csv"df=pd.read_csv(path)df.head()# 将缺失值删除df.dropna(subset=["Age"],inplace=True)# 画图plt.boxplot(x=df.Age, patch_artist=True, # 要求用自定义颜色填充盒形图,默认白色填充 showmeans=True, # 以点的形式显示均值 boxprops = {'color':'black','facecolor':'blue'}, # 设置箱体属性,填充色和边框色 flierprops = {'marker':'o','markerfacecolor':'red','color':'black'}, # 设置异常值属性,点的形状、填充色和边框色 meanprops = {'marker':'*','markerfacecolor':'y','markersize':'12'}, # 设置均值点的属性,点的形状、填充色 medianprops = {'linestyle':'--','color':'orange'}) # 设置中位数线的属性,线的类型和颜色)plt.xlabel("年龄",fontdict={'fontsize':12, 'color':'k'})plt.title("泰坦尼克号乘客年龄箱线图",fontdict={'fontsize':'18', 'color':'k'})
箱线图四分位数:
将n个数从小到大排序,下四分位数是四分之一位置对应的数,一次类推:
下四分位:Q1=(n+1)/4
中分位:Q2=(n+1)/2
上四分位:Q3=3*(n+1)/4
四分位距:IQR=Q3-Q1
下界:Q1-1.5IQR
上界:Q3+1.5IQR
定义超出上界或者下界的数据解释离群值或者异常值。
将乘客年龄按照仓位划分
# 按舱级排序,为了后面正常显示分组盒形图的顺序df.sort_values(by = 'Pclass', inplace=True)# 通过for循环将不同仓位的年龄人群分别存储到列表Age变量中Age = []Levels = df.Pclass.unique()for Pclass in Levels: Age.append(df.loc[df.Pclass==Pclass,'Age'])# 绘图plt.boxplot(x=Age, patch_artist=True, # 要求用自定义颜色填充盒形图,默认白色填充 labels = ['一等舱','二等舱','三等舱'], # 添加具体的标签名称 showmeans=True, # 以点的形式显示均值 boxprops = {'color':'black','facecolor':'blue'}, # 设置箱体属性,填充色和边框色 flierprops = {'marker':'o','markerfacecolor':'red','color':'black'}, # 设置异常值属性,点的形状、填充色和边框色 meanprops = {'marker':'*','markerfacecolor':'y','markersize':'12'}, # 设置均值点的属性,点的形状、填充色 medianprops = {'linestyle':'--','color':'orange'}) # 设置中位数线的属性,线的类型和颜色)plt.ylabel("年龄",fontdict={'fontsize':12, 'color':'k'})plt.title("泰坦尼克号乘客年龄箱线图",fontdict={'fontsize':'18', 'color':'k'})# 显示图形plt.show()
原文链接:
【Python菜鸟进阶大神】Matplotlib数据可视化006:箱线图mp.weixin.qq.com