np.percentile(series, m*100)是numpy中的函数,参数是数据系列,分位数 import numpy as np def f_pers(series): # 定义函数,参数是数据本身 pre_list = []# 空列表装每个数据的历史分位 for i in series: a, b = 0, 1 # 分位的起始区间0%-100% while True: m = (a+b)/2 # 初始分位是50% if np.percentile(series, m*100) >= i: # 如果目标数据小于50%的分位对应的数据,目标数据的历史分位缩小为[0%,50%],下一次的m就是25%,目标数据可能位于0-0.25,也可能位于0.25-0.5,往复循环即可 b = m elif np.percentile(series, m*100) < i: a = m if np.abs(a-b)<=0.0001: # 循环至左右边界误差在4个百分点以后,然后终止 break pre_list.append(round(m,3)) # 把每个数据的分位数放在列表中,取3个小数点 return pre_list # 返回分位数列表
np.percentile(series, m*100)是numpy中的函数,参数是数据系列,分位数
import numpy as np
def f_pers(series): # 定义函数,参数是数据本身
pre_list = [] # 空列表装每个数据的历史分位
for i in series:
a, b = 0, 1 # 分位的起始区间0%-100%
while True:
m = (a+b)/2 # 初始分位是50%
if np.percentile(series, m*100) >= i: # 如果目标数据小于50%的分位对应的数据,目标数据的历史分位缩小为[0%,50%],下一次的m就是25%,目标数据可能位于0-0.25,也可能位于0.25-0.5,往复循环即可
b = m
elif np.percentile(series, m*100) < i:
a = m
if np.abs(a-b)<=0.0001: # 循环至左右边界误差在4个百分点以后,然后终止
break
pre_list.append(round(m,3)) # 把每个数据的分位数放在列表中,取3个小数点
return pre_list # 返回分位数列表