Saltar al contenido

Pasar percentiles a la función de agg de pandas

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)



Utiliza Nuestro Buscador

Deja una respuesta

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