varianza rango percentiles percentil moda mediana intervalos cuartiles confianza python pandas filtering percentile

python - rango - Eliminar todos los datos sobre un percentil dado



varianza en python (2)

Numpy es mucho más rápido que Pandas para este tipo de cosas:

numpy.percentile(df.a,95) # attention : the percentile is given in percent (5 = 5%)

es equivalente pero 3 veces más rápido que:

df.a.quantile(.95) # as you already noticed here it is ".95" not "95"

Así que para su código, da:

df[df.a < np.percentile(df.a,95)]

Tengo un pandas de data llamado DataFrame con una columna llamada ms . Quiero eliminar todas las filas donde data.ms está por encima del percentil del 95%. Por ahora, estoy haciendo esto:

limit = data.ms.describe(90)[''95%''] valid_data = data[data[''ms''] < limit]

que funciona, pero quiero generalizar eso a cualquier percentil. ¿Cuál es la mejor manera de hacer eso?


Utilice el método Series.quantile() :

In [48]: cols = list(''abc'') In [49]: df = DataFrame(randn(10, len(cols)), columns=cols) In [50]: df.a.quantile(0.95) Out[50]: 1.5776961953820687

Para filtrar filas de df donde df.a es mayor o igual que el percentil 95, haga lo siguiente:

In [72]: df[df.a < df.a.quantile(.95)] Out[72]: a b c 0 -1.044 -0.247 -1.149 2 0.395 0.591 0.764 3 -0.564 -2.059 0.232 4 -0.707 -0.736 -1.345 5 0.978 -0.099 0.521 6 -0.974 0.272 -0.649 7 1.228 0.619 -0.849 8 -0.170 0.458 -0.515 9 1.465 1.019 0.966