2017-06-16 5 views
0

Je cherche à obtenir des centiles uniques, même pour une même valeur en Pythonpercentile unique, même pour une même valeur en python

Par exemple, le cas suivant donne la sortie comme prévu.

Case 1

import pandas as pd 
s1 = pd.Series([1,2,3,4]) 
s1.rank(pct=True) 

Cas 1 Sortie - [0.25, 0.5, 0.75, 1]

je me attends à la sortie soit identique, même lorsque la série d'entrée est [2, 2, 2, 4]. Cependant, ici la sortie est [0.5, 0.5, 0.5, 1]. Cela ne me dérange pas non plus l'une des sorties.

[0.25, 0.5, 0.75, 1]  
[0.5, 0.25, 0.75, 1] 
[0.25, 0.75, 0.5, 1] 

Veuillez me faire savoir s'il y a un moyen d'y parvenir.

Répondre

3

Rank a un paramètre method qui par défaut est «moyen», ce qui vous donne les résultats que vous voyez. Changeons cela en 'first'.

s1 = pd.Series([2,2,2,4]) 
s1.rank(pct=True,method='first') 

sortie:

0 0.25 
1 0.50 
2 0.75 
3 1.00 
dtype: float64 
0

Il n'y a pas de fonction simple pour cela. Bien que je comprenne ce que vous voulez faire, c'est pas un score centile. En fait, ce que vous avez montré ici est un pourcentage, qui est et non comme le percentile.

Pour obtenir la fonctionnalité que vous voulez, je crois que vous devrez regrouper et calculer les valeurs vous-même.