百分位数计算方法
前言空气质量污染物序列中一般会涉及第多少百分位数,如臭氧浓度的第90百分位数浓度。本文介绍百分位数的计算方法。计算方法污染物浓度序列第p\boldsymbol{p}p百分位数的计算步骤:将污染物浓度序列按数值大小从小到大排序,不妨设为{X\boldsymbol\{{X}{Xi_{i}i,i=1,2, ⋅ ⋅ ⋅ n\boldsymbol{,i=1,2,~·
·
前言
空气质量污染物序列中一般会涉及第多少百分位数,如臭氧浓度的第90百分位数浓度。本文介绍百分位数的计算方法。
计算方法
污染物浓度序列第p\boldsymbol{p}p百分位数的计算步骤:
- 将污染物浓度序列按数值大小从小到大排序,不妨设为{X\boldsymbol\{{X}{Xi_{i}i,i=1,2, ⋅ ⋅ ⋅ n\boldsymbol{,i=1,2,~·~·~·~n},i=1,2, ⋅ ⋅ ⋅ n}\boldsymbol{\}}}。
- 计算第p\boldsymbol{p}p百分位数m\boldsymbol{m}mp_{p}p的位置索引k\boldsymbol{k}k(从1开始),公式为
k=1+(n−1)×p%\boldsymbol{k=1+(n-1)×p\%}k=1+(n−1)×p%
式中:
k—p%位置索引\boldsymbol{k—p\%位置索引}k—p%位置索引
n—污染物浓度序列中的数值个数\boldsymbol{n—污染物浓度序列中的数值个数}n—污染物浓度序列中的数值个数 - 第p\boldsymbol{p}p百分位数m\boldsymbol{m}mp_{p}p计算公式为
m\boldsymbol{m}mp_{p}p=X\boldsymbol{=X}=X(s)_{(s)}(s)+(X\boldsymbol{+(X}+(X(s+1)_{(s+1)}(s+1)−X\boldsymbol{-X}−X(s)_{(s)}(s))×(k−s)\boldsymbol{)×(k-s)})×(k−s)
式中:
s—k的整数部分,当k为整数时,s与k相等。\boldsymbol{s—k的整数部分,当k为整数时,s与k相等。}s—k的整数部分,当k为整数时,s与k相等。
计算示例
举一个计算的例子:
计算序列{3,4,8,2,5,4}的第90百分位数。\boldsymbol{计算序列\{3,4,8,2,5,4\}的第90百分位数。}计算序列{3,4,8,2,5,4}的第90百分位数。
计算过程:
- 从小到大排序
排序后的序列为{2,3,4,4,5,8}\boldsymbol{\{2,3,4,4,5,8\}}{2,3,4,4,5,8} - 计算索引k\boldsymbol{k}k
k=1+(6−1)×90%=5.5\boldsymbol{k=1+(6-1)×90\%=5.5}k=1+(6−1)×90%=5.5 - 计算m\boldsymbol{m}mp_{p}p
m\boldsymbol{m}mp_{p}p=5+(8−5)×(5.5−5)=6.5\boldsymbol{=5+(8-5)×(5.5-5)=6.5}=5+(8−5)×(5.5−5)=6.5
即该序列的90\boldsymbol{90}90百分位数位6.5。
Python代码实现
def percent_number_cal(data_list: List[float], p: int) -> float:
"""
计算序列指定百分位数
:param data_list: 序列
:param p: 需计算的百分位数
:return: 第p百分位数
"""
sorted_data = sorted(data_list, reverse=False)
k = 1 + (len(sorted_data) - 1) * p / 100
return sorted_data[int(k) - 1] + (sorted_data[int(k)] - sorted_data[int(k) - 1]) * (k - int(k))
以下是本人独自运营的微信公众号,用于分享个人学习及工作生活趣事,大家可以关注一波。
更多推荐

所有评论(0)