2017-03-09 56 views
1

假設我有重複了一系列的:熊貓等級:對於方法的意外行爲=「密」和PCT =真

import pandas as pd 
ts = pd.Series([1,2,3,4] * 5) 

,我要計算它的百分等級。 它始終是一個有點棘手計算與多個匹配的行列,但我覺得我得到意想不到的結果:

ts.rank(method = 'dense', pct = True) 

Out[112]: 
0  0.05 
1  0.10 
2  0.15 
3  0.20 
4  0.05 
5  0.10 
6  0.15 
7  0.20 
8  0.05 
9  0.10 
10 0.15 
11 0.20 
12 0.05 
13 0.10 
14 0.15 
15 0.20 
16 0.05 
17 0.10 
18 0.15 
19 0.20 
dtype: float64 

所以我得到的百分[0.05,0.1,0.15,0.2],在這裏我猜預期的輸出可能是[0.25,0.5,0.75,1],即將輸出乘以重複值的數量。

我的猜測是,爲了計算百分位數,pd.rank簡單地除以觀察次數,這對於method ='dense'是錯誤的。

所以我的問題是:

  1. 你是否同意輸出是意外/錯誤

  2. 我怎樣才能得到我預期的輸出,即分配給每個複製的百分等級,我會得到,如果我沒有在 系列中有任何重複?

+0

這看起來像已經修正了一個錯誤,這正常工作對我來說:'在[213]: TS = pd.Series([1,2,3,4] * 2) ts.rank(方法= '密',PCT =真) 缺貨[213]: 0 0.125 1 0.250 2 0.375 3 0.500 4 0.125 5 0.250 6 0.375 7 0.500 D型細胞:float64'我使用版本0.19.2 – EdChum

+0

你不希望最大值(4)的百分位數高於0.5嗎? 實際上看起來行爲仍然存在,就像您將結果乘以2(重複值的次數),您會得到更有意義的結果。 – FLab

+0

你真的在'ts.rank(method ='first',pct = True)'後? – EdChum

回答