識別和排除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中文網其他相關文章!