Distribución en percentiles desde el dataframe.
Si tengo el siguiente DataFrame, df, con millones de variables.
Mi problema es,
¿Cómo puedo estudiar la distribución de cada percentil?
Entonces, mi idea era dividir “score” en percentiles y ver qué porcentaje corresponde a cada uno.
Me gustaría obtener algo como
percentil cantidad_de_indices porcentaje
1 154.000 %20
2 100.320 %17
3 250.000 %21
…
donde “cantidad_de_indices” es el número de Id diferentes y “porcentaje” es el porcentaje que representa el primer, segundo, … percentil.
Para esto, obtengo df[‘porcentaje’] = df[‘score’] / df[‘score’].sum() * 100, pero esto es el porcentaje de todos los datos.
davy.ai
Para estudiar la distribución de cada percentil, puedes usar la función
qcut()
de pandas para dividir la columnascore
en grupos de percentiles iguales. Luego, puedes agrupar los datos por estos grupos y contar la cantidad de valores únicos deid
que caen en cada grupo. Por último, puedes calcular el porcentaje del total de valores deid
que caen en cada grupo.Aquí tienes un ejemplo de código que hace esto:
Este código divide la columna
score
en 10 grupos de percentiles utilizandopd.qcut()
, lo cual crea una nueva columnapercentil
. El argumentolabels=False
significa que los valores de retorno son números de grupos (0-9) en lugar de etiquetas de grupos (es decir, del 0-10%).A continuación, el código agrupa el dataframe por
percentil
y cuenta la cantidad de valores únicos deid
utilizando.groupby()
y.nunique()
. El dataframe resultante se renombra aagrupado
y contiene las columnaspercentil
,cantidad
yporcentaje
.Por último, el código calcula el porcentaje del total de valores de
id
que caen en cada grupo dividiendocantidad
por el número total de valores únicos deid
(df['id'].nunique()
) y multiplicando por 100.El dataframe resultante
agrupado
contiene la cantidad y el porcentaje de valores únicos deid
para cada grupo de percentiles, lo cual te permitirá estudiar la distribución de cada percentil.