xt正常值,xt代表什么疾病

首页 > 实用技巧 > 作者:YD1662024-02-14 01:29:04

四分位差发现异常值

在具体报警流程上,四分位差法和西格玛法则是一致的。都需要经过获取数据、构建区间和比较三个步骤。我们就不在这里赘述了。四分位差法的一个好处是,由于其利用的是中位数和分位数,因此受异常值影响较小。因此在指标有较多异常值的情景下或者不符合正态分布的情况下,就可以利用四分位差法进行异常值的判断。

Excel里分位数的公式用percentile(x:x,n),第二个参数n可以选填0.1-1之间以0.1为步长的小数。

但也一样奉上Python代码,以供有需之人:

Python其函数代码如下所示:

# 四分位差 def alarm_ts_q(data, col, time_col="date"): """ data :数据框 col :str,关注的指标列名 time_col:时间名 """ data = data.copy() data = data.sort_values(time_col) data.index = data[time_col] # 按周工作日记周末分别构建预紧期间 q1_weekday = data.loc[data.is_holiday == False, col].rolling(30).quantile(0.25) q3_weekday = data.loc[data.is_holiday == False, col].rolling(30).quantile(0.75) q1_weekend = data.loc[data.is_holiday == True, col].rolling(10).quantile(0.25) q3_weekend = data.loc[data.is_holiday == True, col].rolling(10).quantile(0.75) q1 = pd.concat([q1_weekday, q1_weekend], 0) q3 = pd.concat([q3_weekday, q3_weekend], 0) iqr = q3 - q1 down, up = q1 - 1.5 * iqr, q3 1.5 * iqr up = up.sort_index() down = down.sort_index() # 画图 fig = plt.figure(figsize=(15, 6)) matplotlib.rcParams["font.family"] = ["Heiti TC"] # 需要显示的是汉语 plt.plot(data[col], "k-") plt.plot(up, "k--", linewidth=0.8) plt.plot(down, "k--", linewidth=0.8) plt.fill_between(up.index, up, down, alpha=0.1) plt.xlim(data.index[32], data.index[-1]) alarm_date_down = data.index[(data[col] < down)] for i in alarm_date_down: plt.axvline(i, color="r", alpha=0.4) alarm_date_up = data.index[(data[col] > up)] for i in alarm_date_up: plt.axvline(i, color="g", alpha=0.4) plt.title( "{}趋势及预警:下限预警{}次,上限预警{}次".format(col, len(alarm_date_down), len(alarm_date_up)), fontsize="x-large", ) plt.xticks(fontsize="x-large") plt.yticks(fontsize="x-large") return alarm_date_up, alarm_date_down, up, down, q1, q3

本公众号会持续更新体系化的数据分析技能、思维文章,文章内容来源都是数据禅心团队超十年累积的经验。

这些经验已经被集结成书,也已经被制作成付费课程。

但在这个号,大家可以免费学习,请关注“数据禅心DataZen”不要迷路。

如果看完能学以致用,即使不点赞收藏,就是对码字老师最大的支持啦~

目前这系列文章非常适合数据分析入门,建议大家每一篇都不要落下~


上一页1234末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.