當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python Pandas DataFrame quantile方法用法及代碼示例

Pandas DataFrame.quantile(~) 方法返回指定分位數處的插值。

參數

1.q | array-likefloat

要計算的所需分位數,必須介於 0(含)和 1(含)之間。默認情況下, q=0.5 ,即計算第 50 個百分位數的值。

2. axis | Noneintstring | optional

是否按行或按列計算分位數:

說明

0"index"

計算每列的分位數。

1"columns"

計算每行的分位數。

默認情況下,axis=0

3. numeric_only | boolean | optional

是否僅計算數字類型的行/列的分位數。如果設置為 False ,則還將計算具有 datetimetimedelta 的行/列的分位數。默認情況下,numeric_only=True

4. interpolation | string | optional

當給定百分位數位於兩個 data-points 之間時,如何對值進行插值,例如 ij,其中 i<j

說明

"linear"

標準線性插補

"lower"

返回i

"higher"

返回j

"midpoint"

返回(i+j)/2

"nearest"

返回 ij ,以較接近者為準

默認情況下,interpolation="linear"

返回值

如果 q 是標量,則返回 Series。否則,返回DataFrame

例子

考慮以下 DataFrame :

df = pd.DataFrame({"A":[2,4,6,8],"B":[5,6,7,8]})
df



   A  B
0  2  5
1  4  6
2  6  7
3  8  8

按列計算百分位

要計算每列的第 50 個百分位數:

df.quantile()   # q=0.5



A    5.0
B    6.5
Name: 0.5, dtype: float64

這裏,返回類型是Series。為了解釋輸出,A 列中的值正好有 50% 小於 5.0

按行計算百分位

要計算每行的第 30 個百分位數:

df.quantile(q=0.3, axis=1)



0    2.9
1    4.6
2    6.3
3    8.0
Name: 0.3, dtype: float64

計算多個百分位數

要獲取每列第 50 個和 75 個百分位數的值:

df.quantile([0.5, 0.75])   # returns a DataFrame



      A    B
0.50  5.0  6.50
0.75  6.5  7.25

更改插值方法

考慮以下 DataFrame :

df = pd.DataFrame({"A":[2,4,6,8]})
df



   A  
0  2
1  4
2  6
3  8
線性

考慮指定分位數對應的值不存在的情況:

df.quantile(0.5)   # interpolation="linear"



A    5.0
Name: 0.5, dtype: float64

此處,由於 A 列中不存在對應於第 50 個百分位數的值,因此該值在 4 和 6 之間線性插值。

降低
df.quantile(0.5, interpolation="lower")



A    4
Name: 0.5, dtype: int64

同樣,由於 50% 分位數不存在,我們需要執行插值。我們知道它在值 4 和 6 之間。通過傳入 "lower" ,我們選擇較低的值,即本例中的 4。

更高
df.quantile(0.5, interpolation="higher")



A 6
Name: 0.5, dtype: int64

"lower" 相同的邏輯,但我們采用較高的值。

這是相同的 df 供您參考:

df



   A  
0  2
1  4
2  6
3  8
最近的
df.quantile(0.5, interpolation="nearest")



A    6
Name: 0.5, dtype: int64

通過傳入 "nearest" ,我們不再總是選擇較低或較高的值,而是采用最接近的值。在本例中,50% 分位數為 5,恰好位於 4 和 6 的中間。在這種情況下,選擇較高的值。

中點
df.quantile(0.5, interpolation="midpoint")



A    5.0
Name: 0.5, dtype: float64

在這裏,我們隻取下限值和上限值的中點,因此 (4+6)/2=5

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | quantile method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。