使用python中的库matplotlib绘制箱线图(boxplot)

    科技2024-03-10  70

    假设有如下数据:

    import pandas as pd import matplotlib.pyplot as plt import numpy as np data=pd.read_csv("agebodyfat.csv")

    我们要分别绘制出age这列数据的箱线图和%fat这列数据的箱线图。 一、如何绘制箱线图 1.计算出这份数据的Q1,Q2,Q3。 其中Q1为下四分位数,Q2为中位数,Q3为上四分位数。(解释一下什么是四分位数,就是把数据从小到大排序之后,可以把这份数据平均分成四份,其中第一份数据最后一个数就是Q1,也叫做下四分位数,第二份数据最后一个数就是Q2,也叫中位数,第三份数据的最后一个数就是Q3,也叫上四分位数。) 至此,我们可以想象,在一条数轴上,我们已经标出了Q1,Q2,Q3。 2.计算出内限,也叫异常值截断点。 四分位距:IQR=Q3-Q1。 QQ1=Q1-1.5IQR QQ3=Q3+1.5IQR 把QQ1和QQ2也标记在数轴上 二、绘制箱线图 显然那五个标记在数轴上的从小到大排列会是这样的:QQ1,Q1,Q2,Q3,QQ3。 在QQ1左边或者QQ3右边的数据我们称之为异常数据。

    figure,axis=plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=80) list=["age","%fat"] for i in range(2): axis[i].boxplot(data[list[i]], showmeans=True, boxprops={'color': 'red'}, flierprops={'marker': 'o', 'mfc': 'red', 'color': 'black'}, ) axis[i].grid(linestyle="--",alpha=0.5) axis[i].set_title(list[i]) axis[i].set_xticks([]) plt.suptitle("boxplot of age and %fat") plt.show()

    绘制的结果如下: 三、分析箱线图 很直观可以发现两组数据都是Q2,Q3距离比较近,所以可以知道在Q2~Q3区间上数据分布比较密集。

    Processed: 0.010, SQL: 8