tutorial seleccionar notebook graficos graficas español documentacion curso comandos columnas python pandas dataframe group-by pivot

python - seleccionar - Cómo usar groupby en pandas para calcular un porcentaje/proporción total basado en un criterio en otra columna



pandas python tutorial español (1)

Estoy tratando de averiguar cómo usar la función groupby en pandas para calcular las proporciones de valores por año con un criterio dado de Sí / No.

Por ejemplo, tengo un marco de datos, vamos a llamarlo nombres:

Name Number Year Sex Criteria 0 name1 789 1998 Male N 1 name1 688 1999 Male N 2 name1 639 2000 Male N 3 name2 551 1998 Male Y 4 name2 499 1999 Male Y

Puedo usar

namesgrouped = names.groupby(["Sex","Year","Criteria"]).sum()

Llegar:

Number Sex Year Criteria Male 1998 N 14507 Y 2308 1999 N 14119 Y 2331

y así. Me gustaría que la columna ''Criterios numéricos'' muestre el% del total para cada género y año, así que en vez de N = 14507 e Y = 2308 para 1998, tendría N = 86.27% e Y = 13.73%.

¿Alguien puede aconsejarme cómo hacer esto? ¡Gracias por adelantado!


Esta pregunta es una extensión directa del duplicado sugerido . Tomando prestado de la respuesta aceptada, esto funcionará:

In [46]: namesgrouped.groupby(level=[0, 1]).apply(lambda x: x / x.sum()) Out[46]: Number Sex Year Criteria Male 1998 N 0.588806 Y 0.411194 1999 N 0.579612 Y 0.420388 2000 N 1.000000