np.percentile和np.clip
异常值清洗:
q1, q99 = np.percentile(raw, [1, 99]) raw = np.clip(raw, q1, q99) # 简单的限幅假设我们现在又这么一组体温数据:
raw = [36.5, 36.6, 36.4, 36.7, 36.5, 36.6, 36.4, 36.5, 36.6, 36.7, 36.5, 36.6, 36.4, 36.7, 36.5, 36.6, 36.4, 36.5, 36.6, 45.0]我们的需求是需要把36.4和45.0的进行清洗
第一行:q1, q99 = np.percentile(raw, [1, 99]) 人话翻译:把数组 raw 里的所有数字按从小到大排个队,找到处于 1% 位置的那个数(赋值给 q1)和处于 99% 位置的那个数(赋值给 q99)。 q1(下边界):队伍里排在最前面的那 1% 的“极小值”的分界线。 q99(上边界):队伍里排在最后面的那 1% 的“极大值”的分界线。第二行:raw = np.clip(raw, q1, q99) 人话翻译:把数组 raw 里所有数字卡死在 q1 和 q99 之间。 比 q1 还小的数字,直接强行改成 q1。 比 q99 还大的数字,直接强行改成 q99。 介于两者之间的数字,原封不动,保持不变。