es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cree una frecuencia de ocurrencias de elementos en Pandas junto con la proporción en otra columna.

Quiero obtener tanto la frecuencia como el porcentaje de un valor particular de una columna de df. Digamos que tengo un df con (col1, col2, col3, PhoneService, Churn), la columna ‘PhoneService’ tiene valores de Sí o No. Quiero obtener tanto los recuentos como el porcentaje de valores Sí/No en el df.

He intentado esto, lo que me da el número de instancias, pero quiero estos como un recuento y un porcentaje del número total de valores en el df.

df_telco.groupby(“PhoneService”)[“Churn”].value_counts()

((df_telco.groupby(“PhoneService”)[“Churn”].value_counts(normalize=True))*100).round(2).astype(str) + ‘ %’

Me da la salida en 2 tablas diferentes.

PhoneService Churn count
No No 512
Yes 170
Yes No 4662
Yes 1699
PhoneService Churn proportion
No No 75.07 %
Yes 24.93 %
Yes No 73.29 %
Yes 26.71 %

Pero quiero que estén en la misma salida con una columna adicional para la proporción en %:

PhoneService Churn count proportion
No No 512 75.07 %
Yes 170 24.93 %
Yes No 4662 73.29 %
Yes 1699 26.71 %

¿Hay alguna manera de mostrarlos juntos en una única salida?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, podemos lograr esto utilizando la función agg y pasando un diccionario de nombres de columna y funciones que deben ser aplicadas a cada columna. El diccionario deberá tener los nombres de columna como claves y las funciones como valores.

    Aquí está el código para lograr esto:

    df_telco.groupby("PhoneService")["Churn"].agg(count='count',
                                                  proportion=lambda x: round(x.value_counts(normalize=True)*100, 2))
    

    El código anterior agrupará el marco de datos por la columna PhoneService y luego aplicará la función count a la columna Churn para obtener el recuento de cada valor. También aplicará la función value_counts a la columna Churn y normalizará los valores para obtener el porcentaje. Finalmente, redondeará los valores de porcentaje a 2 decimales.

    La salida será un marco de datos con las columnas PhoneService, recuento de Churn y proporción.

    PhoneService Churn count proportion
    No No 512 75.07
    No Yes 170 24.93
    Yes No 4662 73.29
    Yes Yes 1699 26.71

Comments are closed.