[英]removing known outliers from pandas dataframe
在大熊貓中,數據幀子集(這里是我的離群值)應刪除:
例:
df = data[~(data.outlier1 == 1)]
但是我的數據框有多個異常行。
是否有類似的東西:
df = data[~((data.outlier1 == 1) or (data.outlier2 == 1) or (data.outlier3 == 1))]
這個想法是同時減去所有離群值(編碼在不同的行中)。
IIUC然后您只需要使用按位或運算符|
測試多個條件:
df = data[~((data.outlier1 == 1) | (data.outlier2 == 1) | (data.outlier3 == 1))]
原因是因為您正在將數組與標量進行比較,所以應使用按位|
運算符,而不是or
另一種方法是通過Winsorizing截斷異常值。 在下面的示例中,每列將在第5個百分點和第95個百分點處設置上限和下限,而不會丟失任何行:
import pandas as pd
from scipy.stats import mstats
%matplotlib inline
test_data = pd.Series(range(30))
test_data.plot()
# Truncate values to the 5th and 95th percentiles
transformed_test_data = pd.Series(mstats.winsorize(test_data, limits=[0.05, 0.05]))
transformed_test_data.plot()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.