文章目录
数据准备相关概念:Q1,Q2,Q3,IQR,QQ1,QQ3绘制箱线图分析箱线图数据准备
假设有如下数据:
我们要分别绘制出age这列数据的箱线图和%fat这列数据的箱线图。
相关概念:Q1,Q2,Q3,IQR,QQ1,QQ3
Q1,Q2,Q3:
将数据从小到大排序,可以把这份数据平均分成四份,其中第一份数据最后一个数就是Q1,也叫做下四分位数,第二份数据最后一个数就是Q2,也叫中位数,第三份数据的最后一个数就是Q3,也叫上四分位数。
至此,我们可以想象,在一条数轴上,我们已经标出了Q1,Q2,Q3。
IQR,QQ1,QQ3:
IQR=Q3-Q1。被称之为四分位距。QQ1=Q1-1.5IQRQQ3=Q3+1.5IQR
其中:
IQR被称之为四分位距。[QQ1,QQ3]被称之为内限,即如果数据落在这个范围之外,被看作是异常值。因此QQ1和QQ3两个点也被称之为异常值截断点。
把QQ1和QQ2也标记在数轴上
小总结:
显然那五个标记在数轴上的从小到大排列会是这样的:QQ1,Q1,Q2,Q3,QQ3。
在QQ1左边或者QQ3右边的数据我们称之为异常数据。
绘制箱线图
import pandas as pdimport matplotlib.pyplot as pltimport numpy as npdata=pd.read_csv("agebodyfat.csv")
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区间上数据分布比较密集。