我正在尝试从数据集中提取离群值并相应地对其进行标记。
样本数据
Doctor Name Hospital Assigned Region Claims Illness Claimed
1 Albert Some hospital Center R-1 20 Sepsis
2 Simon Another hospital Center R-2 21 Pneumonia
3 Alvin ... ... ... ...
4 Robert
5 Benedict
6 Cruz
因此,我试图将Doctor
中的每个Claimed
中的某个Illness
分组到某个Region
中,并尝试在其中找到异常值。
Doctor Name Hospital Assigned Region Claims Illness Claimed is_outlier
1 Albert Some hospital Center R-1 20 Sepsis 1
2 Simon Another hospital Center R-2 21 Pneumonia 0
3 Alvin ... ... ... ...
4 Robert
5 Benedict
6 Cruz
我可以在Power BI中执行此操作。但是,对于Python来说,它还很陌生,我似乎无法弄清楚。
这是我要实现的目标:
算法如下:
Read data
Group data by Illness
Group by Region
get IQR based on Claims Count
if claims count > than (Q3 + 1.5) * IQR
then tag it as outlier = 1
else
not an outlier = 0
Export data
有什么想法吗?
答案 0 :(得分:0)
假设您使用pandas进行数据分析(应该这样做!),您可以使用pandas dataframe boxplot生成类似于您的图:
import pandas as pd
import numpy as np
df.boxplot(column=['b'], whis=[10, 90], vert=False,
flierprops=dict(markerfacecolor='g', marker='D'))
或者,如果您想按要求将它们标记为0,1,请使用数据框分位数()方法https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.quantile.html
df.assign(outlier=df[df>=df.quantile(.9)].any(axis=1)).astype(np.int8)
a b outlier
0 1 1 0
1 2 10 0
2 3 100 1
3 4 100 1