一、基礎知識與應用
numpy.percentile()函數是numpy庫中非常實用的一個百分位數函數。百分位數是一個統計學概念,通俗來說它表示將一群數據按從小到大排列後,以某個比例為界劃分開來的點的數值,通常使用中位數、上四分位數、下四分位數等,來反映總體分布的一個特徵。
numpy.percentile()中的輸入參數包括一個輸入數組以及一個指定百分位數的浮點數,輸出的結果則是對輸入數組中數據按照升序進行排序,然後根據指定的百分位數將其劃分為兩部分,返回分界線處的數值。
import numpy as np
# 數組
array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 獲取50%的分位數
percentile = np.percentile(array, 50)
# 輸出結果
print(percentile) # 5.5
在這個例子中,我們使用 numpy.percentile() 來獲得輸入數組的 50% 的分位數的值。因為輸入數組中有偶數個元素,所以分界線(median)在中間兩個數之間,所以輸出結果為5.5。
二、加權百分位數
nump.percentile()還可以計算加權百分位數。加權百分位數是用於考慮不同數據的權重的情況下計算百分位數的方法。
加權百分位數的計算公式如下:
weighted_percentile = (100 – percentile)/100 * (sum_of_weights – 1) + 1
其中,percentile是需要計算的百分位數,sum_of_weights是所有數據權重的總和。
import numpy as np
# 加權數組
array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
weights = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 獲取50%的分位數加權
percentile = np.percentile(array, 50, weights=weights)
# 輸出結果
print(percentile) # 5.7
這裡,我們使用 numpy.percentile() 來計算加權輸入數組的 50% 的分位數的值。在這個示例中,輸入數組和權重數組相同,因此權重的總和是這些數字的和。運行代碼後,我們得到結果為5.7。
三、numpy.percentile對於異常數據的處理方法
numpy.percentile()函數的另一個重要功能是解決異常數據的問題。當我們處理一個數據集時,可能會存在一些異常的數據值或者缺失值。為了避免這些數據對計算結果造成干擾,我們可以使用 numpy.percentile() 來處理這些異常數據。
import numpy as np
# 數組
array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 用nan替換array中的偶數索引處的數值
array[::2] = np.nan
# 獲取50%的分位數
percentile = np.percentile(array, 50, nan_policy='propagate')
# 輸出結果
print(percentile) #nan
在這個例子中,我們使用 numpy.percentile() 來獲得輸入數組去除偶數索引處的數據後的 50% 的分位數的值。nan_policy參數用來指定如何處理NaN值。propagate的意思是保留,即如果出現NaN值,則返回NaN值。
四、numpy.percentile和描述性統計方法配合使用
numpy.percentile()還可以和其他描述性統計方法一起使用,比如平均數(mean)、中位數(median)、方差(variance)等等。這樣可以給我們更多的信息來幫助我們分析數據。
import numpy as np
# 數組
array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 獲取50%的分位數
percentile = np.percentile(array, 50)
# 獲取平均值
mean = np.mean(array)
# 輸出結果
print(percentile) # 5.5
print(mean) # 5.5(也是中位數,因為輸入數組長度為偶數)
在這個例子中,我們使用 numpy.percentile() 來獲得輸入數組的 50% 的分位數的值。然後,我們使用 numpy.mean() 方法來計算輸入數組的平均值。在這裡,輸入數組的平均值也是中位數,因為輸入數組長度為偶數。運行代碼後,我們得到결과:分界線為5.5、平均值為5.5。
原創文章,作者:VAOS,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/147039.html