我有一个样本系列,在此提供了一个可重复的示例:
data = np.array([190, 1, 470, 183, 131, 0, 333, 14, 82, 31])
ser = pd.Series(data, index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])
我已经用以下代码编写了一个检测离群值的函数:
def detect_outliers(data):
q1, q3 = np.percentile(data, [25, 75])
iqr = q3 - q1
lower_bound = q1 - (iqr * 1.5)
upper_bound = q3 + (iqr * 1.5)
return np.where((data > upper_bound) > (data < lower_bound))
当我在系列 ser 上运行此代码时,得到以下输出:
我了解这是指值为470的数据点,即 第三行 (索引= 2)。如何获得输出索引“ C”而不是索引2的信息?
答案 0 :(得分:0)
像这样改变退货
data[(data > upper_bound) > (data < lower_bound)]
输出:
c 470
答案 1 :(得分:0)
def detect_outliers(data):
ls = []
q1, q3 = np.percentile(data, [25, 75])
iqr = q3 - q1
lower_bound = q1 - (iqr * 1.5)
upper_bound = q3 + (iqr * 1.5)
return data[(data > upper_bound) > (data < lower_bound)]