Comment dois-je calculer les percentiles avec python/numpy?
Est-il un moyen pratique de calculer les percentiles pour une séquence ou mono-dimensionnelle tableau numpy?
Je suis à la recherche de quelque chose de similaire à Excel percentile de la fonction.
J'ai regardé dans NumPy de référence pour les statistiques, et ne pouvait pas en trouver un. Tout ce que je pouvais trouver est la médiane (50e percentile), mais pas quelque chose de plus spécifique.
Vous devez vous connecter pour publier un commentaire.
Vous pourriez être intéressé par le SciPy Stats paquet. Il a le percentile de la fonction vous êtes après, et de nombreuses autres statistiques goodies.
percentile()
est disponible dansnumpy
trop.Ce billet m'amène à croire qu'ils ne seront pas intégrerpercentile()
dans numpy n'importe quand bientôt.df.groupby('key')[['value']].agg(lambda g: np.percentile(g, 10))
Par le façon, il ya un pur Python de mise en œuvre de percentile de la fonction, dans le cas où l'on ne veut pas dépendre de l'scipy. La fonction est copié ci-dessous:
percentile
savoir quoi utiliser pourN
? Il n'est pas spécifié dans l'appel de fonction.Voici comment le faire sans numpy, en utilisant uniquement python pour calculer le percentile.
La définition de percentile j'ai l'habitude de voir s'attend en conséquence, la valeur à partir de la liste fournie ci-dessous qui P % des valeurs sont trouvées... ce qui signifie que le résultat doit être de l'ensemble, pas une interpolation entre les éléments. Pour l'obtenir, vous pouvez utiliser une simple fonction.
Si vous préférez obtenir la valeur à partir de la liste fournie à ou au-dessous de laquelle P % des valeurs sont ensuite utiliser cette simple modification:
Ou avec la simplification proposée par @ijustlovemath:
PERCENTILE
fonction retourne la suite des percentiles pour le haut de votre exemples:3.7 = percentile(A, P=0.3)
,0.82 = percentile(A, P=0.8)
,20 = percentile(B, P=0.3)
,42 = percentile(B, P=0.8)
.n = int(...)
dans unmax(int(...), 1)
fonctionvérifier scipy.statistiques module:
Pour calculer le percentile d'une série, exécutez:
Par exemple:
De départ
Python 3.8
, de la bibliothèque standard est livré avec lequantiles
fonction dans le cadre de lastatistiques
module:quantiles
retourne pour une distribution donnéedist
une liste den - 1
les points de coupure séparant lesn
quantile intervalles (division de ladist
enn
en continu des intervalles de probabilité égale):où
n
, dans notre cas (percentiles
) est100
.Dans le cas où vous besoin d'une réponse à un membre de l'entrée un tableau numpy:
Juste pour ajouter que le centile de la fonction numpy par défaut calcule la sortie d'un linéaire de la moyenne pondérée des deux voisins entrées dans le vecteur d'entrée. Dans certains cas, les gens veulent le retour de l'percentile pour être un véritable élément du vecteur, dans ce cas, à partir de v1.9.0, vous pouvez utiliser le bouton "interpolation" option, avec soit "inférieur", "supérieur" ou "le plus proche".
Ce dernier est un véritable entrée dans le vecteur, alors que le premier est une interpolation linéaire de deux vecteurs d'entrées qui sont en bordure de la percentile
pour une série: permet de décrire les fonctions
supposons que vous avez df avec les colonnes suivantes ventes et id. vous souhaitez calculer les percentiles pour les ventes, alors il fonctionne comme ceci,