标记数据框中的异常值,在 pandas 中创建一个新列

Flagging outliers in dataframe, creating a new column in pandas

我看到这个 想稍微更新一下。

data = {'Group':['A', 'A', 'A'], 'Age':[18, 200, 17]} 
df = pd.DataFrame(data) 

我想创建一个新列“离群值”,其中离群值将根据 3 个标准差标记为真或假。

我想要的输出

data = {'Group':['A', 'A', 'A'], 'Age':[18, 200, 17], 'Outlier':['False', 'True', 'False']} 
df = pd.DataFrame(data) 
df

试试 groupbytransform:

zscores = df.groupby('Group').transform(lambda x: (x - x.mean()) / x.std())
df["Outlier"] = zscores.abs()>3

>>> df
  Group  Age  Outlier
0     A   18    False
1     A  200    False
2     A   17    False

要获得与组无关的离群值,请使用:

zscores = (df["Age"]-df["Age"].mean())/df["Age"].std()
df["Outlier"] = zscores.abs()>3