标记数据框中的异常值,在 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
试试 groupby
和 transform
:
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
我看到这个
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
试试 groupby
和 transform
:
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