如何篩選異常值並處理它們?
簡介
在資料集中,與大部分其他資料點脫穎而出的資料點被稱為異常值。它們會扭曲統計測量結果,並掩蓋資料中潛在的趨勢,從而對資料分析、建模和視覺化產生不利影響。因此,在開始任何研究之前,識別和處理異常值至關重要。
在這篇文章中,我們將探討處理異常值的各種方法,以及如何檢查它們。
異常值篩選
為了處理異常值,我們必須首先識別它們。以下是識別異常值的一些常用技術:
1. 視覺檢查
使用圖表和繪圖(例如箱線圖、散點圖和直方圖)視覺化資料是查詢異常值的一種方法。與大多數其他資料點有很大不同的資料點稱為異常值。透過分析圖表,我們可以確定異常值是真實的還是由錯誤或損壞的資料導致的。
2. Z 分數
Z 分數是一個統計量,它計算資料點偏離均值的標準差數量。透過計算每個資料點的 Z 分數,我們可以找到與大多數其他資料點有很大不同的資料點。Z 分數為 3 或更大的資料點通常被視為異常值。
3. 四分位距 (IQR)
四分位距是指資料第 25 個百分位數 (Q1) 和第 75 個百分位數 (Q3) 之間的區間。透過計算 IQR 並將其乘以 1.5 的係數,我們可以找到與大多數其他資料點有很大不同的資料點。任何低於 Q1 1.5 倍或高於 Q3 1.5 倍 IQR 的資料點通常被視為異常值。
處理異常值
在找到異常值後,我們需要確定如何處理它們。以下是處理異常值的一些常用方法:
1. 移除
從資料集中刪除異常值是處理異常值最簡單的方法。但是,此方法應謹慎使用,因為刪除太多異常值可能會對資料集的統計測量產生重大負面影響,並掩蓋關鍵趨勢。在這樣做時,記錄過程和刪除異常值的理由至關重要。
2. 轉換
使用數學函式(如對數、指數或冪函式)轉換資料是處理異常值的另一種方法。透過這種方法,資料集統計量的極值的影響將減小,並且更容易發現模式。
3. 插補
插補是指用估計值替換缺失或異常資料。可以使用多種方法進行資料插補,包括均值插補、中位數插補和迴歸插補。此方法應謹慎使用,因為它可能會在資料集中引入偏差並影響研究的準確性。
4. 分割
資料集分割是指根據不同的特徵或屬性將其分解成較小的組。透過分割資料,我們可以獨立地研究每個組並找到每個組特有的模式。當處理有效但反映資料不同部分的異常值時,此方法可能很有用。
示例
import pandas as pd import numpy as np from scipy import stats # Create a sample dataset data = pd.DataFrame({'value': [10, 9, 8, 7, 6, 555, 999, 5, 6]}) # Calculate z-scores for each value in the dataset z_scores = np.abs(stats.zscore(data)) # Identify outliers as any value with a z-score greater than 3 outliers = data[z_scores > 3] # Replace outliers with the median value of the dataset data[z_scores > 3] = data['value'].median() # Print the updated dataset without outliers print(data)
輸出
value 0 10 1 9 2 8 3 7 4 6 5 555 6 999 7 5 8 6
解釋
使用名為 value 的一列和 10 個值(包括一個值為 100 的異常值)生成一個示例資料集。
使用 stats.zscore 函式(來自 SciPy 包)確定資料集中每個值的 Z 分數。資料點的 Z 分數表示它與均值的標準差數量。
使用 print 函式列印新的資料集,其中不包含異常值。
由於我們只關心與均值的偏差大小,而不是其方向,因此使用 np.abs 函式獲取每個 Z 分數的絕對值。
使用條件 z 分數 > 3 來識別任何 Z 分數大於 3 的值為異常值。
使用 value 的中位數函式將異常值替換為資料集的中位數。
程式碼使用 Z 分數方法找到並從資料集中刪除了異常值。已識別的異常值被替換為資料集的中位數。當樣本量很大或資料呈正態分佈時,此方法可能很有用。
需要注意的是,處理異常值還有其他方法,本例中使用的方法僅是一種方法。其他常見方法包括修剪、Winsorizing 和使用對異常值具有魯棒性的機器學習演算法。最佳方法將取決於資料集的特定特徵和研究的目標。
結論
總之,異常值會對資料分析、建模和視覺化產生負面影響,因此在開始任何研究之前識別和處理它們至關重要。透過使用視覺檢查、Z 分數和 IQR 檢查異常值,然後使用移除、轉換、插補或分割處理它們,我們可以確保我們的分析是準確和有見地的。但是,務必謹慎使用這些方法並記錄該過程。