異常數據處理-箱型圖


1.箱型圖

它主要用於反映原始數據分布的特征,還可以進行多組數據分布特征的比較

 

 

 2.適合數據類型

針對連續型變量

 

 

 圖表解讀:

1.箱子的大小取決於數據的四分位距,即IQR = Q3 - Q1(Q3: 75%分位數 , Q1: 25%分位數 , Q3和Q1為四分位數)。50%的數據集中於箱體,若箱體太大即數據分布離散,數據波動較大,箱體小表示數據集中。

2.箱子的上邊為上四分位數Q3,下邊為下四分位數Q1,箱體中的橫線為中位數Q2(50%分位數)

3.箱子的上觸須為數據的最大值Max,下觸須為數據的最小值Min(注意是非離群點的最大最小值,稱為上下相鄰值)

4.若數據值 > Q3+1.5 * IQR(上限值) 或 數據值 < Q1-1.5 * IQR(下限值) ,均視為異常值。數據值 > Q3+3 * IQR 或 數據值 < Q1-3 * IQR ,均視為極值。在實際應用中,不會顯示異常值與極值的界限,而且一般統稱為異常值。

  • 也表明上下觸須不一定是數據的最大最小值,
  • (1)若數據的最大值比上限值小的,那么上觸須頂點就是觀察到的最大的;若數據的最大值比上限值大的,那么上觸須頂點就是上限值,觀察到的最大值就是異常點。
  • (2)若數據的最小值比下限值大的,那么下觸須頂點就是觀察到的最小值;若數據的最小值比下限值小的,那么下觸須頂點就是下限值,觀察到的最小值就是異常點。
  • 上述情況復雜,在線范圍外的,直接理解成異常值即可

3.python中plt.boxplot()使用

下面是plt.boxplot()的參數

plt.boxplot(x,
notch=None,
sym=None,
vert=None,
whis=None,
positions=None,
widths=None,
patch_artist=None,
bootstrap=None,
usermedians=None,
conf_intervals=None,
meanline=None,
showmeans=None,
showcaps=None,
showbox=None,
showfliers=None,
boxprops=None,
labels=None,
flierprops=None,
medianprops=None,
meanprops=None,
capprops=None,
whiskerprops=None,
manage_xticks=True,
autorange=False,
zorder=None,
hold=None,
data=None)

    • x:指定要繪制箱線圖的數據;
    • notch:是否是凹口的形式展現箱線圖,默認非凹口;
    • sym:指定異常點的形狀,默認為+號顯示;
    • vert:是否需要將箱線圖垂直擺放,默認垂直擺放;
    • whis:指定上下須與上下四分位的距離,默認為1.5倍的四分位差;
    • positions:指定箱線圖的位置,默認為[0,1,2…];
    • widths:指定箱線圖的寬度,默認為0.5;
    • patch_artist:是否填充箱體的顏色;
    • meanline:是否用線的形式表示均值,默認用點來表示;
    • showmeans:是否顯示均值,默認不顯示;
    • showcaps:是否顯示箱線圖頂端和末端的兩條線,默認顯示;
    • showbox:是否顯示箱線圖的箱體,默認顯示;
    • showfliers:是否顯示異常值,默認顯示;
    • boxprops:設置箱體的屬性,如邊框色,填充色等;
    • labels:為箱線圖添加標簽,類似於圖例的作用;
    • filerprops:設置異常值的屬性,如異常點的形狀、大小、填充色等;
    • medianprops:設置中位數的屬性,如線的類型、粗細等;
    • meanprops:設置均值的屬性,如點的大小、顏色等;
    • capprops:設置箱線圖頂端和末端線條的屬性,如顏色、粗細等;
    • whiskerprops:設置須的屬性,如顏色、粗細、線的類型等;

例子

import numpy as np
import matplotlib.pyplot as plt
plt.style.use("ggplot")
plt.rcParams["font.sans-serif"]=["SimHei"] #正常顯示中文標簽
plt.rcParams["axes.unicode_minus"]=False #正常顯示負號
np.random.seed(800) #設置隨機種子
data=np.random.randint(1,100,55)
plt.figure(figsize=(5,6)) #設置圖形尺寸大小
plt.boxplot(data,
notch=False, #中位線處不設置凹陷
widths=0.2, #設置箱體寬度
medianprops={'color':'red'}, #中位線設置為紅色
boxprops=dict(color="blue"), #箱體邊框設置為藍色
labels="A", #設置標簽
whiskerprops = {'color': "black"}, #設置須的顏色,黑色
capprops = {'color': "green"}, #設置箱線圖頂端和末端橫線的屬性,顏色為綠色
flierprops={'color':'purple','markeredgecolor':"purple"} #異常值屬性,這里沒有異常值,所以沒表現出來
)
plt.title("55個1-100的隨機整數的箱線圖",fontsize="xx-large",color="#DE0052")
plt.show()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM