Saltar al contenido

Pasar percentiles a la función pandas agg

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'])

Te mostramos las reseñas y valoraciones de los lectores

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *