Basta ya de investigar por todo internet porque llegaste al lugar perfecto, contamos con la solución que necesitas hallar y sin problema.
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 incluye esto en tu 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ía hacerse aunque…
Siendo más específicos, si solo desea agregar los resultados de su grupo de pandas mediante la función de percentil, la función lambda de python ofrece una solución bastante clara. 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 usarla junto con otras funciones de agregación.
Tu puedes tener agg()
use una función personalizada que se ejecutará 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'])