我们通过箱线图可以发现数据大致分布情况,一幅箱线图往往包含以下几个元素。
上下界,上下四分位点,中位数和离群点。
而我们定义离群点为区间外的点。
:下四分位点
:上四分位点
:上下四分位点的距离
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"] # windows系统
plt.rcParams['axes.unicode_minus']=False #正常显示符号
age= [42,54,42,36,46,33,64,-12,63,44,34,42,124,94,-32,56,45,42,1]
age=pd.Series(age)
plt.figure(figsize=(12,4))
box=plt.boxplot(age)
plt.title('小区年龄箱线图')
可以看到箱线图出现了离群点,接下来我们需要找到这些离群点。
plt.figure(figsize=(12,4))
box=plt.boxplot(age)
plt.title('小区年龄箱线图')
x=box['fliers'][0].get_xdata() #查询离群点的横坐标
y=box['fliers'][0].get_ydata() #查询离群点的纵坐标
for i in range(len(y)):
plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.05,y[i]),color='red')
通过fliers标注离群点的位置,再通过annotate赋予对应的纵坐标(如果离群点很多则需要自行调整文本的位置)
我们发现离群点一共有5个,显然负数年龄和124岁高龄是不合理的,需要删除,至于是否删除其他点因题而异。
另外,箱线图一般需要跟直方图,核密度图,描述性统计等综合分析,才能看清楚数据分布趋势。