美文网首页
Box Plot in Python -一个完整的指南

Box Plot in Python -一个完整的指南

作者: Threathunter | 来源:发表于2021-04-13 10:46 被阅读0次

    来源:https://python.plainenglish.io/box-plot-in-python-a-complete-guide-for-beginners-9c480a086977

    其它资料:

    https://blog.csdn.net/weixin_32655655/article/details/112156580

    https://zhuanlan.zhihu.com/p/30757480

    https://www.jianshu.com/p/c8184250db31?utm_campaign

    箱形图(Box Plot)是探索性数据分析中用来分析给定数据分布的标准图之一。

    箱形图是探索性数据分析中用来分析数据分布的标准图之一。它提供一个图形摘要来识别数据集的分布(distribution )和偏度( skewness )。这是框图的样子:

    在箱线图中,数据集根据其四分位数值进行分割。

    从箱线图中,您可以找到数据集中的最小值(minimum)、第一个四分位数值( first quartile)、中间值(median )、第三个四分位数值(third quartile)和最大值(maximum)。

    一、解读箱形图(Box Plot)

    下极值(Lower Extreme):这是数据集中除去离群值的最小值(离群值是与总体随机样本中的其他值存在异常距离的观察值)。

    上极值点(Upper Extreme):排除异常值后的最大值点。

    中值(Median Value):这是数据集的中点。50%的数据点将低于这个值,50%的数据点将高于这个值。

    下四分位数/第一四分位数(Lower Quartile/ First Quartile):这是第25百分位数的点。25%的数据点值低于这个值,75%的数据点值高于这个值。

    上四分位数/第三四分位数(Upper Quartile/ Third Quartile):这是第75百分位数的点。75%的数据点值低于此值。

    四分位数范围(Interquartile range,IQR):在第25和第75百分位数之间的点。(即中间50%的数据点)

    Whiskers:中间50%以外的点。

    二、如何在箱线图中确定异常值

    离群值是指远离其他数据点的点。它们在箱形图中被分别表示为单独的点。异常值是指小于Q1-1.5 *IQR的点和大于Q3 + 1.5*IQR的点。

    三、从箱形图理解偏度

    一个分布可以是正态分布,也可以是正偏度分布,也可以是负偏度分布。您可以通过使用分布的箱线图来找到这一点。

    在一个正态分布数据集中,所有四分位数的长度都是相同的。

    在正偏度数据集中,第1和第2个四分位数的长度会更小,而第3和第4个四分位数的长度会更大。

    在一个负偏度数据集中,第1和第2个四分位数的长度会更大,而第3和第4个四分位数的长度会更小。

    四、箱形图比较

    通过不同组的箱线图,您可以很容易地比较这些组的分布和中值。它提供了一种简单的方法来可视化组的范围和分布。

    在上图中,你可以看到4个不同人群年龄的箱线图。

    让我们看看从上面的图表中我们可以得到的所有见解。

    1、组1涵盖了各个年龄段的人群,因为在这种情况下,范围更高。

    2、组3的中位年龄最高,组1的中位年龄最低。

    3、组0的箱线图相对较短,这表明它只涵盖了一个非常低的范围。

    4、4组都是正态分布的。

    最后,我简要解释另一种箱线图——缺口箱线图,以此来结束本文。

    五、缺口箱线图

    在这种情况下,箱线图将在中心包含一个缺口。notch代表95%置信区间的中位数。缺口范围计算为

    median +/- 1.57*IQR/square_root(N)

    数据来源:

    https://www.kaggle.com/ronitf/heart-disease-uci?select=heart.csv

    https://github.com/arunavedula/Heart.csv/blob/master/heart.csv

    六、首先看看数据集

    首先,导入研究数据集所需的所有库——numpy、pandas、matplotlib、seaborn。

    import numpy as np

    import pandas as pd

    import matplotlib.pyplot as plt

    import seaborn as sns

    然后使用pandas导入数据集。

    df = pd.read_csv("heartdisease.csv")

    df.head()

    可以看到数据集包含了很多列,如age,sex,cp,trestbps等,其中一些是类别值,一些是连续值。

    七、绘制基本的箱线图

    箱线图用于理解数据集的分布。让我们看看病人胆固醇水平数据的箱线图。

    要绘制箱线图,请使用plt.boxplot()函数。将数据集作为参数传递给函数。

    fig = plt.figure(1, figsize=(9, 6))

    plt.boxplot(df['chol'])

    取值范围是小于100 ~大于500。你能从这个箱线图中得到什么启示?

    让我们逐一分析一下。

    考虑最小值和最大值,排除数据集中的异常值。

    看中间的那个框,下面的部分表示第25百分位数,即第一个四分位数,上面的部分表示第75百分位数,即第3个四分位数。

    中间的橙色线代表中值。

    第一和第三分位数线之间的距离称为四分位数间范围。

    百分位数(percentile)是什么?如果一个点的百分位数是40,那么这意味着数据集中有40%的点低于这个值。

    八、绘制一个缺口箱线图

    在plt.boxplot()函数中使用notch=True参数来创建一个缺口框图。

    这个缺口表示中值的95%置信区间。

    fig = plt.figure(1, figsize=(9, 6))

    plt.boxplot(df['chol'],notch = True)

    九、水平的箱线图

    使用vert=0参数创建水平箱线图。

    fig = plt.figure(1, figsize=(9, 6))

    plt.boxplot(df['chol'],notch = True,vert=0)

    十、多个箱线图在一个单独的图形

    您可以在单个箱线图中绘制许多变量的分布。您只需将所有列作为数据集传递到箱线图中。

    您还可以使用labels=参数在x轴上标记变量。

    fig = plt.figure(1, figsize=(9, 6))

    data = [df['trestbps'],df['chol'],df['thalach']]

    plt.boxplot(data,labels=['Trestbps','Chol','Thalach'])

    十一、箱线图使用seaborn

    箱线图也可以在seaborn中使用sns.boxplot()函数绘制。

    您需要将x变量、y变量和数据作为参数传递给函数。

    fig = plt.figure(1, figsize=(9, 6))

    sns.boxplot(x='cp',y='chol',data=df)

    在上图中,你可以看到不同患者的胆固醇水平的分布,对于不同的cp值。

    由此可以看出,当cp=0时,与cp=3时相比,胆固醇的范围明显更高。

    为了理解箱形图的分布,您还可以尝试绘制一个带状图

    fig = plt.figure(1, figsize=(9, 6))

    sns.boxplot(x='cp',y='chol',data=df)

    sns.stripplot(x="cp", y="chol",data=df)

    你可以看到在箱形图中显示的最小值和最大值之间的点。

    十二、在箱线图中表示3个变量

    使用hue参数sns.boxplot()将第三个变量添加到boxplot中。

    fig = plt.figure(1, figsize=(9, 6))

    sns.boxplot(x='cp',y='chol',hue='sex',data=df)

    sns.stripplot(x="cp", y="chol",hue='sex',data=df)

    我们可以在一张图中表示3个变量——性别、胆固醇和cp。

    首先,根据cp值对值进行分隔,然后对每个cp值根据性别进行分割——男性和女性。

    相关文章

      网友评论

          本文标题:Box Plot in Python -一个完整的指南

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