簡體   English   中英

從熊貓數據框中刪除已知的異常值

[英]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()

Winsorized數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM