从Pandas groupby数据框的列中删除异常值

时间:2018-11-25 11:04:24

标签: python pandas

我有以下数据框l,按CodeMonth分组:

l.head():

                 Qty
  Code    Month 
 600003     02    1
            06    2
 600006     02    1
            05    1
            07    2

我想通过Qty来检测离群值,所以我尝试了IQR:

def get_num_outliers(column):
q1 = np.percentile(column, 25)
q3 = np.percentile(column, 75)
return ((column<q1) | (column>q3))

l.agg([get_num_outliers])

我似乎没有得到有效的答案。 我仍然是熊猫的初学者,想知道是否有人可以帮助我。谢谢!

1 个答案:

答案 0 :(得分:1)

def remove_outlier(df, col):
  q1 = df[col].quantile(0.25)
  q3 = df[col].quantile(0.75)

  iqr = q3 - q1
  lower_bound  = q1 - (1.5  * iqr)
  upper_bound = q3 + (1.5 * iqr)

  out_df = df.loc[(df[col] > lower_bound) & (df[col] < upper_bound)]
  return out_df