##极差异常点检测
def z_score(self, df_t, var_1, threshold):
     median1 = df_t[var_1].median()
     mad = (df_t[var_1] - median1).abs().median()
     zscore = ((df_t[var_1] - median1) * 0.6475 / mad).abs()
     ##过渡段以上小阈值
     if var_1 == 'TR002_Avg' and abs(self.full_power - median1) < 200:
         threshold = 1.5
     index_up = (zscore > threshold) & (df_t[var_1] >= median1)
     index_down = (zscore > threshold) & (df_t[var_1] < median1)
     index_all = index_up | index_down
     if sum(index_all) > 0:
         return list(df_t.index[index_all].values)
     else:
         return []

这里是相关解释的别人写的文档,可参考:

https://www.baidu.com/link?url=N1rQqsg-1pYT-x8Uddqre6gWV_dYzuXJPPJ86bHAgfjkJuoLKMoew0yG2ij3nkqo0fewb44ro9dflhnyEDTKSq&wd=&eqid=976943f8000103520000000262bc0f4e