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.

Tabla dinámica de Pandas. Obteniendo modos y porcentajes relevantes.

Aquí está el problema. Mientras estoy creando una tabla dinámica en un marco de datos de Pandas, necesito agregar los valores de la columna para obtener sus modas, así como sus porcentajes relevantes.

Este fragmento de código solo me da la moda de la columna ‘C’, pero necesito tanto la moda como su porcentaje de participación.

df.pivot_table(index='A', values='C', aggfunc=lambda x: x.mode())
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener tanto la moda como su porcentaje de participación, podemos definir una función personalizada y usarla en el parámetro aggfunc del método pivot_table.

    Aquí hay un ejemplo de código que calcula la moda y el porcentaje de participación para la columna C agrupada por A:

    def moda_con_porcentaje(x):
        valor_moda = x.mode().iloc[0]
        conteo_moda = (x == valor_moda).sum()
        return pd.Series([valor_moda, conteo_moda/len(x)])
    
    df.pivot_table(index='A', values='C', aggfunc=moda_con_porcentaje)
    

    En este código, la función moda_con_porcentaje calcula el valor de moda y su porcentaje de participación en la serie de entrada x. Usamos el método iloc para extraer el primer elemento de la serie de valores de moda (que debería ser un valor escalar), y luego contamos el número de ocurrencias de ese valor en la serie de entrada usando la operación de comparación x == valor_moda. El arreglo booleano resultante se suma para obtener el conteo, que se divide por la longitud de la serie de entrada para obtener el porcentaje de participación.

    Finalmente, pasamos esta función como argumento al parámetro aggfunc del método pivot_table. La tabla pivote resultante tendrá columnas para el valor de moda y su porcentaje de participación.

Comments are closed.