在大熊貓數據框的子集(這裏是我的異常值)應刪除:刪除已知從大熊貓異常數據框中
例如:
df = data[~(data.outlier1 == 1)]
但我的數據框中有多個離羣行。
有什麼樣:
df = data[~((data.outlier1 == 1) or (data.outlier2 == 1) or (data.outlier3 == 1))]
的想法是可以減去所有的異常值(在不同行編碼)在同一時間。
在大熊貓數據框的子集(這裏是我的異常值)應刪除:刪除已知從大熊貓異常數據框中
例如:
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百分位數地板,而不會失去任何行:後`DF =
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()
對不起你data [〜((data.outlier1 == 1)|(data.outlier2 == 1)|(data.outlier3 == 1))]'? – EdChum
是的。謝謝。我知道這可能是基本的知識,但我並不是那種經歷過蟒蛇或大熊貓的經歷。另外,我認爲有全面答案的簡短問題對其他沒有經驗的用戶很有用。 – Annamarie