scipy.stats.rankdata
を使用できます。
In [17]: (rank - 1)/(len(values) - 1)
Out[17]:
array([ 0. , 0.16666667, 0.16666667, 0.16666667, 0.66666667,
0.66666667, 1. ])
(I」:基本的な計算はpercent_rank
の等価を与えそして
In [15]: rank = rankdata(values, method='min')
In [16]: rank
Out[16]: array([1, 2, 2, 2, 5, 5, 7])
:
In [12]: import numpy as np
In [13]: from scipy.stats import rankdata
In [14]: values = np.array([15, 20, 20, 20, 30, 30, 40])
rankdata(values, method='min')
が所望のランクを与える:次の例は、http://docs.aws.amazon.com/redshift/latest/dg/r_WF_PERCENT_RANK.htmlに示した結果を再生しますPython 3.5を使用しています。Python 2では、(rank - 1)/float(len(values) - 1)
のようなものを使用してください。)
あなたはpercentileofscore
を使用することができますが、:
- あなたは引数
kind='strict'
を使用する必要があります。
- 結果を
n/(n-1)
でスケーリングしなければなりません。n
は値の数です。あなたはそれぞれの個別の結果を計算するためにループを使用する必要がありますので、あなたは0と1
percentileofscore
間の画分に真の割合から変換するために、100で分割する必要があり
- は、2番目の引数がスカラーであることを期待します値。
ここでは上記と同じ値を使用した例です:
ここ
In [87]: import numpy as np
In [88]: from scipy.stats import percentileofscore
In [89]: values = np.array([15, 20, 20, 20, 30, 30, 40])
In [90]: n = len(values)
私は結果を生成するために、リストの内包表記を使用します。httpsでの文書から判断
In [91]: [n*percentileofscore(values, val, kind='strict')/100/(n-1) for val in values]
Out[91]:
[0.0,
0.16666666666666666,
0.16666666666666666,
0.16666666666666666,
0.66666666666666663,
0.66666666666666663,
1.0]
:// WWW .postgresql.org/docs/current/static/functions-window.html 'scipy.stats.percentileofscore'の' kind'オプションのどれもpostgresqlの 'percent_rank'関数と一致しないと思います。 –