最近在看特征工程,其中用到了seaborn中的boxplot,发现和按照网上的四分位数算法得出的结果不太一样,经过摸索总结如下:
import seaborn as sns
import matplotlib.pyplot as plt
x = [1,3,3.2,7,8,8.1,19]
#求四分位数
#n为奇数[1,3,3.2,7,8,8.1,19]则:先求中位数[7];上四分位数,先有包括中位数后数列[7,8,8.1,19],求中位数得(8+8.1)/2=8.05;同理下四分位数(3+3.2)/2=3.1
#n为偶数[1,3,3.2,7,8,8.1,12,19]则:先求中位数(7+8)/2=7.5;再求Q1,位置(n+1)/4=(8+1)/4=2.25,Q1=3*0.25+3.2*0.75=3.15;
#同理Q2,位置3(n+1)/4=3(8+1)/4=6.75,Q2=8.1*0.75+12*0.25=9.075
#IQR(Inter-Quartile Range)=Q3-Q1
#上限为数列中不超过Q3+1.5*IQR的最大值,下限为数列中不小于Q1-1.5*IQR的最小值
sns.boxplot(data=x,orient='v')
plt.show()