美文网首页呆鸟的Python数据分析
python怎么画箱线图?Matplotlib数据可视化006:

python怎么画箱线图?Matplotlib数据可视化006:

作者: Yang_6234 | 来源:发表于2020-04-13 07:58 被阅读0次

    前文回看:

        【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 np

    import pandas as pd

    import matplotlib as mpl

    import 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()

    由上图可知,舱位等级越高的乘客,他们的年龄越高,三种舱位的平均年龄为38、30和25,说明年龄越是偏大一点,他们的经济能力会越强一些,所买的舱位等级可能就会越高一些。同时,在二等舱和三等舱内,乘客的年龄上存在一些异常用户。

    原文,在本人公众号,链接:

    https://mp.weixin.qq.com/s/4A4drHs02UIMfc7Ft7LBtg

    相关文章

      网友评论

        本文标题:python怎么画箱线图?Matplotlib数据可视化006:

        本文链接:https://www.haomeiwen.com/subject/hyuwmhtx.html