##极差异常点检测 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 []
这里是相关解释的别人写的文档,可参考: