首頁 > 後端開發 > Python教學 > 如何使用 Z 分數識別並刪除 Pandas DataFrame 中的異常值?

如何使用 Z 分數識別並刪除 Pandas DataFrame 中的異常值?

Patricia Arquette
發布: 2024-11-30 12:39:14
原創
631 人瀏覽過

How Can I Identify and Remove Outliers from a Pandas DataFrame Using Z-scores?

識別和排除pandas DataFrame 中的異常值

在具有多個列的pandas DataFrame 中,根據特定列值識別和排除異常值可以提高資料的準確性和可靠性。離群值或顯著偏離大多數數據的極端值可能會扭曲分析結果並導致錯誤的結論。

要有效過濾離群值,穩健的方法是依賴統計技術。一種方法涉及使用 Z 分數,它衡量一個值與平均值的標準差有多少。 Z 分數超過預定義閾值的行可視為異常值。

使用 sciPy.stats.zscore

sciPy 函式庫提供 zscore() 函數來計算 Z -DataFrame 中每列的分數。這是一個檢測和排除異常值的優雅解決方案:

import pandas as pd
import numpy as np
from scipy import stats

df = pd.DataFrame({'Vol': [1200, 1220, 1215, 4000, 1210]})

outlier_threshold = 3

# Compute Z-scores for the 'Vol' column
zscores = np.abs(stats.zscore(df['Vol']))

# Create a mask to identify rows with outliers
outlier_mask = zscores > outlier_threshold

# Exclude rows with outliers
df_without_outliers = df[~outlier_mask]
登入後複製

這種方法可以有效識別異常值行並將其從 DataFrame 中刪除。

處理多列

如果有多列,異常值偵測可以套用於特定欄位或所有欄位同時:

# Outliers in at least one column
outlier_mask = (np.abs(stats.zscore(df)) < outlier_threshold).all(axis=1)

# Remove rows with outliers in any column
df_without_outliers = df[~outlier_mask]
登入後複製
# Outliers in a specific column ('Vol')
zscores = np.abs(stats.zscore(df['Vol']))
outlier_mask = zscores > outlier_threshold

# Remove rows with outliers in the 'Vol' column
df_without_outliers = df[~outlier_mask]
登入後複製

透過採用Z-score計算等統計方法,可以有效偵測並排除pandas DataFrame中的異常值,確保分析資料更乾淨、更可靠。

以上是如何使用 Z 分數識別並刪除 Pandas DataFrame 中的異常值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板