Ⅰ 怎麼對統計數據的異常值進行判斷和處理
異常值,指的是樣本中的一些數值明顯偏離其餘數值的樣本點,所以也稱為離群點。異常值分析就是要將這些離群點找出來,然後進行分析。
異常值判斷
在不同的數據中,鑒別異常值有不同的標准,常規有以下幾種:
(1)數字超過某個標准值
這是最常用的異常值判斷方法之一。主要是看數據中的最大值或最小值,依據專業知識或個人經驗,判斷是否超過了理論范圍值,數據中有沒有明顯不符合實際情況的錯誤。
比如,測量成年男性身高(M),出現17.8m這樣的數據,顯然不符合實際情況。
又或者,如問卷數據使用1-5級量表進行研究,出現-2,-3這類數據,則可能提示為跳轉題、空選等。
(2)數據大於±3標准差
3σ 原則是在數據服從正態分布的時候用的比較多,在這種情況下,異常值被定義為一組測定值中與平均值的偏差超過3倍標准差的值。
在數據處理的時候,按照正態分布的性質,三個標准差以外的數據都可以被看作是錯誤的數據從而排除掉。
Ⅱ 如何判別測量數據中是否有異常值
一般異常值的檢測方法有基於統計的方法,基於聚類的方法,以及一些專門檢測異常值的方法等,下面對這些方法進行相關的介紹。
1. 簡單統計
如果使用pandas,我們可以直接使用describe()來觀察數據的統計性描述(只是粗略的觀察一些統計量),不過統計數據為連續型的,如下:
df.describe()紅色箭頭所指就是異常值。
以上是常用到的判斷異常值的簡單方法。下面來介紹一些較為復雜的檢測異常值演算法,由於涉及內容較多,僅介紹核心思想,感興趣的朋友可自行深入研究。
4. 基於模型檢測
這種方法一般會構建一個概率分布模型,並計算對象符合該模型的概率,把具有低概率的對象視為異常點。如果模型是簇的集合,則異常是不顯著屬於任何簇的對象;如果模型是回歸時,異常是相對遠離預測值的對象。
離群點的概率定義:離群點是一個對象,關於數據的概率分布模型,它具有低概率。這種情況的前提是必須知道數據集服從什麼分布,如果估計錯誤就造成了重尾分布。
比如特徵工程中的RobustScaler方法,在做數據特徵值縮放的時候,它會利用數據特徵的分位數分布,將數據根據分位數劃分為多段,只取中間段來做縮放,比如只取25%分位數到75%分位數的數據做縮放。這樣減小了異常數據的影響。
優缺點:(1)有堅實的統計學理論基礎,當存在充分的數據和所用的檢驗類型的知識時,這些檢驗可能非常有效;(2)對於多元數據,可用的選擇少一些,並且對於高維數據,這些檢測可能性很差。
5. 基於近鄰度的離群點檢測
統計方法是利用數據的分布來觀察異常值,一些方法甚至需要一些分布條件,而在實際中數據的分布很難達到一些假設條件,在使用上有一定的局限性。
確定數據集的有意義的鄰近性度量比確定它的統計分布更容易。這種方法比統計學方法更一般、更容易使用,因為一個對象的離群點得分由到它的k-最近鄰(KNN)的距離給定。
需要注意的是:離群點得分對k的取值高度敏感。如果k太小,則少量的鄰近離群點可能導致較低的離群點得分;如果K太大,則點數少於k的簇中所有的對象可能都成了離群點。為了使該方案對於k的選取更具有魯棒性,可以使用k個最近鄰的平均距離。
優缺點:(1)簡單;(2)缺點:基於鄰近度的方法需要O(m2)時間,大數據集不適用;(3)該方法對參數的選擇也是敏感的;(4)不能處理具有不同密度區域的數據集,因為它使用全局閾值,不能考慮這種密度的變化。
5. 基於密度的離群點檢測
從基於密度的觀點來說,離群點是在低密度區域中的對象。基於密度的離群點檢測與基於鄰近度的離群點檢測密切相關,因為密度通常用鄰近度定義。一種常用的定義密度的方法是,定義密度為到k個最近鄰的平均距離的倒數。如果該距離小,則密度高,反之亦然。另一種密度定義是使用DBSCAN聚類演算法使用的密度定義,即一個對象周圍的密度等於該對象指定距離d內對象的個數。
優缺點:(1)給出了對象是離群點的定量度量,並且即使數據具有不同的區域也能夠很好的處理;(2)與基於距離的方法一樣,這些方法必然具有O(m2)的時間復雜度。對於低維數據使用特定的數據結構可以達到O(mlogm);(3)參數選擇是困難的。雖然LOF演算法通過觀察不同的k值,然後取得最大離群點得分來處理該問題,但是,仍然需要選擇這些值的上下界。
6. 基於聚類的方法來做異常點檢測
基於聚類的離群點:一個對象是基於聚類的離群點,如果該對象不強屬於任何簇,那麼該對象屬於離群點。
離群點對初始聚類的影響:如果通過聚類檢測離群點,則由於離群點影響聚類,存在一個問題:結構是否有效。這也是k-means演算法的缺點,對離群點敏感。為了處理該問題,可以使用如下方法:對象聚類,刪除離群點,對象再次聚類(這個不能保證產生最優結果)。
優缺點:(1)基於線性和接近線性復雜度(k均值)的聚類技術來發現離群點可能是高度有效的;(2)簇的定義通常是離群點的補,因此可能同時發現簇和離群點;(3)產生的離群點集和它們的得分可能非常依賴所用的簇的個數和數據中離群點的存在性;(4)聚類演算法產生的簇的質量對該演算法產生的離群點的質量影響非常大。
7. 專門的離群點檢測
其實以上說到聚類方法的本意是是無監督分類,並不是為了尋找離群點的,只是恰好它的功能可以實現離群點的檢測,算是一個衍生的功能。
Ⅲ 「Python」Pandas如何解決業務問題「數據分析流程詳解」
在數據科學領域,Python因其強大的功能和廣泛的庫支持,成為了數據分析師的首選工具。其中,Pandas作為Python的數據處理利器,在解決業務問題時展現出了無可替代的價值。本文將通過完整的數據分析流程,解析Pandas如何協助解決業務問題,具體案例來源於對一家虛構超市的訂單數據集的分析,以探索Pandas在數據清洗、特徵工程、數據預處理等環節的應用。
首先,我們設計了一個包含各種不規范數據點的模擬數據集,以考驗Pandas的清洗能力。這些數據來源於對超市訂單的深入分析,包含多個數據表格。為了確保分析的准確性,我們首先導入了Pandas所需的模塊,如pd.read_excel和pd.read_csv,用於從數據集中載入多頁數據。
導入數據後,我們對數據進行了初步的了解,明確數據欄位及定義,這一步是數據預處理的關鍵,確保後續分析的准確性。通過pd.Series.head(),我們可以快速查看每個數據表格的欄位示例數據,從而對數據有一個清晰的認識。
在明確業務需求和分析方法後,我們開始利用Pandas進行數據清洗和特徵工程。數據清洗旨在識別並處理異常值,以確保分析結果的可靠性。異常值可能是數據中的錯誤或不尋常的高或低值,通過pd.Series.str.contains和pd.Series.between()等方法,我們可以精準定位並剔除這類數據。此外,數據類型轉換是另一個重要步驟,確保所有數據類型符合後續分析的需要。
特徵工程和數據清洗完成後,我們開始構建分析所需的特徵,比如通過聚合計算用戶累計消費金額和頻率,以及顧客購買行為的時間序列特徵。這些特徵為後續的模型構建提供了堅實的基礎。在構建特徵的過程中,我們通過pd.groupby().agg()對用戶消費特徵進行了聚合計算,特別對R(最近一次消費時間)值進行了日期之間的距離計算,以准確反映用戶活躍度。
通過pd.cut函數,我們對用戶客單價區間進行了分箱處理,將數據劃分為多個價格區間,從而更細致地分析不同消費水平的用戶群體。這一過程通過pd.Series.value_counts方法實現了對客單價分布的統計,為後續的模型構建和策略制定提供了重要依據。
在數據預處理和特徵構建完成後,我們進入模型構建階段。通過Tukey's Test方法對RFM指標進行離群值檢測,確保模型的穩健性。我們計算了R、F、M值的分位數,通過Q3和Q1確定合理值區間,將在此區間之外的數據標記為異常值。隨後,我們通過聚類分析計算了RFM閾值,基於二八原則(20%的關鍵客戶)來確定用戶分群的規則。
構建RFM模型後,我們對用戶進行了分群計算,通過RFM閾值將用戶劃分為活躍、中等、不活躍等不同層級。這一過程不僅揭示了用戶的消費行為模式,還為制定個性化營銷策略提供了依據。通過透視表和逆透視表方法,我們深入分析了不同分群的用戶在客單價、人數佔比等關鍵指標上的表現,從而為業務提供更具洞察力的決策支持。
本文以Pandas為核心,展示了從數據導入、清洗、特徵構建到模型構建的完整數據分析流程,通過實際案例探討了Pandas在解決業務問題中的應用。通過掌握這些技能,數據分析師可以更高效地處理數據,發現有價值的信息,為業務決策提供有力支持。在後續的進階篇中,我們將深入探討機器學習流程和更復雜的特徵工程內容,以提供更全面的數據分析解決方案。