在 Python 中計算百分位數
-
在 Python 中使用
scipy
包計算百分位數 -
在 Python 中使用
NumPy
包計算百分位數 -
在 Python 中使用
math
包計算百分位數 -
在 Python 中使用
statistics
包計算百分位數 - 在 Python 中使用 NumPy 的線性插值方法計算百分位數
- 在 Python 中使用 NumPy 的下插值方法計算百分位數
- 在 Python 中使用 NumPy 的高階插值方法計算百分位數
- 在 Python 中使用 NumPy 的中點插值方法計算百分位數
百分位數表示低於某一數值的分數的百分比。例如,一個人的智商為 120,就處於第 91 個百分位數,這意味著他的智商大於 91%的其他人。
本文將討論一些在 Python 中計算百分位數的方法。
在 Python 中使用 scipy
包計算百分位數
這個包將計算輸入序列在給定百分位的得分。scoreatpercentile()
函式的語法如下。
scipy.stats.scoreatpercentile(
a, per, limit=(), interpolation_method="fraction", axis=None
)
在 scoreatpercentile()
函式中,引數 a
代表一維陣列,per
指定 0 到 100 的百分位數。另外兩個引數是可選的。NumPy
庫用來獲取我們計算百分位數的數字。
完整的示例程式碼如下。
from scipy import stats
import numpy as np
array = np.arange(100)
percentile = stats.scoreatpercentile(array, 50)
print("The percentile is:", percentile)
輸出:
The percentile is: 49.5
在 Python 中使用 NumPy
包計算百分位數
這個包有一個 percentile()
函式,可以計算給定陣列的百分位數。percentile()
函式的語法如下。
numpy.percentile(
a,
q,
axis=None,
out=None,
overwrite_input=False,
interpolation="linear",
keepdims=False,
)
引數 q
代表百分位數的計算數。a
代表一個陣列,其他引數是可選的。
完整的示例程式碼如下。
import numpy as np
arry = np.array([4, 6, 8, 10, 12])
percentile = np.percentile(arry, 50)
print("The percentile is:", percentile)
輸出:
The percentile is: 8.0
在 Python 中使用 math
包計算百分位數
math
包及其基本函式-ceil
可用於計算不同的百分比。
完整的示例程式碼如下。
import math
arry = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def calculate_percentile(arry, percentile):
size = len(arry)
return sorted(arry)[int(math.ceil((size * percentile) / 100)) - 1]
percentile_25 = calculate_percentile(arry, 25)
percentile_50 = calculate_percentile(arry, 50)
percentile_75 = calculate_percentile(arry, 75)
print("The 25th percentile is:", percentile_25)
print("The 50th percentile is:", percentile_50)
print("The 75th percentile is:", percentile_75)
math.ceil(x)
將數值四捨五入並返回大於或等於 x
的最小整數,而 sorted
函式則對陣列進行排序。
輸出:
The 25th percentile is: 3
The 50th percentile is: 5
The 75th percentile is: 8
在 Python 中使用 statistics
包計算百分位數
statistics
包中的 quantiles()
函式用於將資料分解為等概率,並返回 n-1
的分佈列表。該函式的語法如下。
statistics.quantiles(data, *, n=4, method='exclusive')
完整的示例程式碼如下。
from statistics import quantiles
data = [1, 2, 3, 4, 5]
percentle = quantiles(data, n=4)
print("The Percentile is:", percentle)
輸出:
The Percentile is: [1.5, 3.0, 4.5]
在 Python 中使用 NumPy 的線性插值方法計算百分位數
我們可以使用插值模式計算不同的百分比。插值模式有 linear
、lower
、higher
、midpoint
和 nearest
。當百分位數在兩個資料點 i
和 j
之間時,會使用這些插值。當百分位值為 i
時,為低位插值模式,j
代表高位插值模式,i + (j - i) * fraction
代表線性模式,其中 fraction
表示 i
和 j
包圍的索引。
下面給出了線性插值模式的完整示例程式碼。
import numpy as np
arry = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print("percentiles using interpolation = ", "linear")
percentile_10 = np.percentile(arry, 10, interpolation="linear")
percentile_50 = np.percentile(arry, 50, interpolation="linear")
percentile_75 = np.percentile(arry, 75, interpolation="linear")
print(
"percentile_10 = ",
percentile_10,
", median = ",
percentile_50,
" and percentile_75 = ",
percentile_75,
)
我們使用 numpy.percentile()
函式,附加引數 interpolation
。你可以看到,我們得到的是這種插值的浮動值。
輸出:
percentiles using interpolation = linear
percentile_10 = 1.9 , median = 5.5 and percentile_75 = 7.75
在 Python 中使用 NumPy 的下插值方法計算百分位數
下面給出了較低插值模式的完整示例程式碼。
import numpy as np
arry = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print("percentiles using interpolation = ", "lower")
percentile_10 = np.percentile(arry, 10, interpolation="lower")
percentile_50 = np.percentile(arry, 50, interpolation="lower")
percentile_75 = np.percentile(arry, 75, interpolation="lower")
print(
"percentile_10 = ",
percentile_10,
", median = ",
percentile_50,
" and percentile_75 = ",
percentile_75,
)
輸出:
percentiles using interpolation = lower
percentile_10 = 1 , median = 5 and percentile_75 = 7
你可以看到,最終的百分位數被粗略地調整到了最低值。
在 Python 中使用 NumPy 的高階插值方法計算百分位數
此方法將給出給定陣列的百分數,取最高舍入值。
下面給出了高插值模式的完整示例程式碼。
import numpy as np
arry = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print("percentiles using interpolation = ", "higher")
percentile_10 = np.percentile(arry, 10, interpolation="higher")
percentile_50 = np.percentile(arry, 50, interpolation="higher")
percentile_75 = np.percentile(arry, 75, interpolation="higher")
print(
"percentile_10 = ",
percentile_10,
", median = ",
percentile_50,
" and percentile_75 = ",
percentile_75,
)
輸出:
percentiles using interpolation = higher
percentile_10 = 2 , median = 6 and percentile_75 = 8
在 Python 中使用 NumPy 的中點插值方法計算百分位數
此方法將給出百分位數的中點。
下面給出了中點插值模式的完整示例程式碼。
import numpy as np
arry = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print("percentiles using interpolation = ", "midpoint")
percentile_10 = np.percentile(arry, 10, interpolation="midpoint")
percentile_50 = np.percentile(arry, 50, interpolation="midpoint")
percentile_75 = np.percentile(arry, 75, interpolation="midpoint")
print(
"percentile_10 = ",
percentile_10,
", median = ",
percentile_50,
" and percentile_75 = ",
percentile_75,
)
輸出:
percentiles using interpolation = midpoint
percentile_10 = 1.5 , median = 5.5 and percentile_75 = 7.5
相關文章 - Python Math
- 在 Python 中計算階乘
- 在 Python 中計算反餘弦
- 在 Python 中計算模乘逆
- 使用基本程式設計概念在 Python 中列印乘法表
- 用 Python 製作成績轉換器
- Python 中的級數求和