Pandas Tabla dinámica Diccionario de Agg función

Estoy tratando de calcular 3 aggregative funciones durante girar:

  1. Contar
  2. Significa
  3. Desvest

Este es el código:

n_page = (pd.pivot_table(Main_DF, 
                         values='SPC_RAW_VALUE',  
                         index=['ALIAS', 'SPC_PRODUCT', 'LABLE', 'RAW_PARAMETER_NAME'], 
                         columns=['LOT_VIRTUAL_LINE'],
                         aggfunc={'N': 'count', 'Mean': np.mean, 'Sigma': np.std})
          .reset_index()
         )

Error que estoy recibiendo es: KeyError: 'Mean'

¿Cómo puedo calcular los 3 funciones?

InformationsquelleAutor Felix | 2015-12-10

3 Comentarios

  1. 7

    La aggfunc argumento de pivot_table toma una función o una lista de funciones, pero no dict

    aggfunc : función predeterminada de numpy.media, o de la lista de funciones
    Si la lista de funciones aprobó, el resultado de la tabla dinámica se han jerárquica columnas cuyo nivel superior son los nombres de función (inferirse a partir de la función de los objetos mismos)

    Así que trate de

    n_page = (pd.pivot_table(Main_DF, 
                             values='SPC_RAW_VALUE',  
                             index=['ALIAS', 'SPC_PRODUCT', 'LABLE', 'RAW_PARAMETER_NAME'], 
                             columns=['LOT_VIRTUAL_LINE'],
                             aggfunc=[len, np.mean, np.std])
              .reset_index()
             )

    Puede que desee cambiar el nombre de la jerarquía de las columnas después.

    • Puede usted indique cómo puedo cambiar el nombre jerárquico columnas, decir «len» a «n»
  2. 15

    Como está escrito en aprobado respuesta por @Happy001, aggfunc no puede tomar dict es falso. podemos pasar a la dict a aggfunc.

    Una característica muy útil es la capacidad de pasar a un dictionary a la aggfunc así que usted puede realizar diferentes funciones en cada uno de los valores que seleccione.
    por ejemplo:

    import pandas as pd
    import numpy as np
    
    df = pd.read_excel('sales-funnel.xlsx')  #loading xlsx file
    
    table = pd.pivot_table(df, index=['Manager', 'Status'], columns=['Product'], values=['Quantity','Price'],
               aggfunc={'Quantity':len,'Price':[np.sum, np.mean]},fill_value=0)
    table

    En el código de arriba, yo estoy pasando dictionary a la aggfunc y la realización de len operación en Quantity y mean, sum operaciones en Price.

    Aquí está la salida adjuntando:

    Los Pandas Lista de Tabla dinámica de Aggfunc

    El ejemplo es tomado de tabla dinámica, explicó.

    • Grande @ganesh. Sin embargo, me di cuenta de que un valor puede ser asignado sólo una vez aggfunc. Si intenta asignar un mismo valor con otros aggfunc, sólo la primera asignación de obras. Ha venido usted a través de esta situación?
  3. 2

    Trate de usar groupby

    df = (Main_DF
          .groupby(['ALIAS', 'SPC_PRODUCT', 'LABLE', 'RAW_PARAMETER_NAME'], as_index=False)
          .LOT_VIRTUAL_LINE
          .agg({'N': 'count', 'Mean': np.mean, 'Sigma': np.std})
         )

    Configuración as_index=False sólo deja como columnas en el dataframe así que usted no tiene que reiniciar el índice después.

    • Parece que el valor de yo soy el cálculo de estadísticas ‘SPC_RAW_VALUE’ desaparecido en su código
    • Puedes publicar algunos datos de la muestra? Main_DF.head().to_dict('list')
    • Lo siento, no puedo. Esta es la IP
    • A continuación, hacer algo! Cómo Pedir

Dejar respuesta

Please enter your comment!
Please enter your name here