Pandas Pivot Table Dictionary of Agg function
Estoy tratando de calcular 3 aggregative
funciones durante el giro:
- Contar
- Media
- StDev
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()
)
El error que obtengo es: KeyError: 'Mean'
¿Cómo puedo calcular esas 3 funciones?
3 respuestas
El argumento aggfunc
de pivot_table
toma una función o una lista de funciones pero no dict
aggfunc: function, numpy.mean predeterminado, o lista de funciones Si se pasa la lista de funciones, la tabla dinámica resultante tendrá columnas jerárquicas cuyo nivel superior son los nombres de las funciones (inferidos de los propios objetos de función)
Así que intenta
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()
)
Es posible que desee cambiar el nombre de las columnas jerárquicas después.
Intenta 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})
)
La configuración as_index=False
simplemente los deja como columnas en su marco de datos para que no tenga que restablecer el índice después.
Como está escrito en la respuesta aprobada por @ Happy001, aggfunc
no puede tomar dict
es falso. en realidad podemos pasar el dict
a aggfunc
.
Una característica realmente útil es la capacidad de pasar un dictionary
al aggfunc
para que pueda 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 anterior, paso dictionary
a aggfunc
y realizo len
operación en Quantity
y mean
, sum
operaciones en {{ X6}}.
Aquí está la salida adjunta:
El ejemplo está tomado de tabla dinámica explicada.
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.