Solución:
Quizás no sea súper eficiente, pero una forma sería crear una función usted mismo:
def percentile(n):
def percentile_(x):
return np.percentile(x, n)
percentile_.__name__ = 'percentile_%s' % n
return percentile_
Luego incluya esto en su agg
:
In [11]: column.agg([np.sum, np.mean, np.std, np.median,
np.var, np.min, np.max, percentile(50), percentile(95)])
Out[11]:
sum mean std median var amin amax percentile_50 percentile_95
AGGREGATE
A 106 35.333333 42.158431 12 1777.333333 10 84 12 76.8
B 36 12.000000 8.888194 9 79.000000 5 22 12 76.8
Tenga en cuenta que así es como deberían aunque se haga …
Siendo más específico, si solo desea agregar sus resultados de grupo de pandas usando la función percentil, la función python lambda ofrece una solución bastante ordenada. Usando la notación de la pregunta, agregando por el percentil 95, debería ser:
dataframe.groupby('AGGREGATE').agg(lambda x: np.percentile(x['COL'], q = 95))
También puede asignar esta función a una variable y utilizarla junto con otras funciones de agregación.
Tu puedes tener agg()
use una función personalizada para ser ejecutada en la columna especificada:
# 50th Percentile
def q50(x):
return x.quantile(0.5)
# 90th Percentile
def q90(x):
return x.quantile(0.9)
my_DataFrame.groupby(['AGGREGATE']).agg({'MY_COLUMN': [q50, q90, 'max']})
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)