matlablib数据可视化之箱线图(盒须图)
要想了解箱线图,我们从以下几个问题探讨的角度来了解它
箱线图长什么样?
箱线图可以做什么?
箱线图怎么画以及异常点怎么找?
第一个问题:箱线图长什么样?
直接上图
它就长这样,中间一个箱子,加上中间一条线贯穿,因此形象的被人们称为箱线图
,那么看看中间想不想一个盒子,上下两边像不像两根“胡须”呢?
其实它还被人们形象的称为盒须图
那么
第二个问题:这样的图有有什么用?
相信你已经发现了,用这样一个箱线图,我们能够直观的看出数据的各个描述性统计信息分别大致在什么位置
当然,其实还能够显示平均数,下面画图的时候再演示
实际上,箱线图最大的作用并不止是这些,而是判断异常值。
异常值也称为离群点,就是远离绝大多数样本点的特殊群体,通常这样的数据点在数据集中表现出不合理的特征。
可能看上面的图,你已经注意到了,超过上须的数据点我们就将它视为异常点
,实际上,同样,低于下须的数据点我们也将它视为异常点
知道这些以后,我们着手通过数据集来找异常值了
第三个问题:箱线图怎么画以及异常点怎么找?
这里我用python的matplotlib的子模块plpyot来实现
实例:识别太阳黑子数据异常点
数据集(百度网盘)用兴趣一起做
链接:https://pan.baidu.com/s/1GZ8o9KYxuFZixl5inKADhA
提取码:wjwu
1.导入数据
导入数据分析三大神器
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei' # 处理图中中文显示不出的问题
plt.rcParams['axes.unicode_minus'] = False # 让x刻度负号显现
%config InlineBackend.figure_format = 'svg' # 解决图的分辨率问题(出矢量图)
sunsports = pd.read_csv('/datas/sunspots.csv',encoding='utf-8')
# 换成你自己的数据存放路径
year是年份,counts是当年太阳黑子的数量
2.画箱线图
#绘制箱线图
plt.boxplot(x= sunsports['counts'],# 数据
whis=1.5,#指定1.5倍四分位差
widths=0.7, # 箱线图宽度
showmeans=True,# 显示均值
patch_artist=True,# 填充箱体颜色
boxprops={'facecolor':'steelblue'}, # 指定箱体颜色
meanprops={'markerfacecolor':'red'},# 指定均值点颜色
labels=[''] # 去除箱线图x轴刻度值
)
plt.show()
你可能已经注意到了,此数据中最少有5个异常值,但是遗憾的是,我们并不能看出是哪几个数据点是异常值。但是没有关系,我们可以采用计算的方式来找出异常值
2.1找异常值
# 计算下四分位数和上四分位数
Q1 = sunsports.counts.quantile(q=0.25)
Q3 =sunsports.counts.quantile(q=0.75)
Q1,Q3
# 计算上须和下须
up_whisker = Q3+1.5*(Q3-Q1)
lower_whisker = Q1-1.5*(Q3-Q1)
# 找到异常数据
sunsports[(sunsports.counts>up_whisker) | (sunsports.counts<lower_whisker)]
结果:
想了解更多知识,欢迎移步到微信公众号
扫码或搜索数据分析者
好了,箱线图就先分享到这儿,如果对你有帮助,不要忘记点赞或者小额打赏哦!