Calcule el promedio ponderado usando un pandas / marco de datos

mike01010:

Tengo la siguiente tabla. Quiero calcular un promedio ponderado agrupado por cada fecha según la fórmula siguiente. Puedo hacer esto usando algún código convencional estándar, pero suponiendo que estos datos estén en un marco de datos de pandas, ¿hay alguna manera más fácil de lograr esto en lugar de a través de la iteración?

Date        ID      wt      value   w_avg
01/01/2012  100     0.50    60      0.791666667
01/01/2012  101     0.75    80
01/01/2012  102     1.00    100
01/02/2012  201     0.50    100     0.722222222
01/02/2012  202     1.00    80

01/01/2012 w_avg = 0.5 * (60 / I (60,80,100)) + .75 * (80 / I (60,80,100)) + 1.0 * (100 / I (60,80,100))

01/02/2012 w_avg = 0.5 * (100 / suma (100,80)) + 1.0 * (80 / suma (100,80))

Andy Hayden:

Creo que haría esto con dos groupbys.

Primero para calcular el "promedio ponderado":

In [11]: g = df.groupby('Date')

In [12]: df.value / g.value.transform("sum") * df.wt
Out[12]:
0    0.125000
1    0.250000
2    0.416667
3    0.277778
4    0.444444
dtype: float64

Si configura esto como una columna, puede agrupar sobre ella:

In [13]: df['wa'] = df.value / g.value.transform("sum") * df.wt

Ahora la suma de esta columna es la deseada:

In [14]: g.wa.sum()
Out[14]:
Date
01/01/2012    0.791667
01/02/2012    0.722222
Name: wa, dtype: float64

o potencialmente:

In [15]: g.wa.transform("sum")
Out[15]:
0    0.791667
1    0.791667
2    0.791667
3    0.722222
4    0.722222
Name: wa, dtype: float64

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

groupby ponderado promedio y suma en el marco de datos de pandas

Calcule el promedio y agregue una nueva fila al marco de datos

Calcule el promedio ponderado en una sola consulta

Calcule el promedio ponderado con pandas dataframe

calcular el valor promedio del marco de datos de pandas

calcular el valor promedio del marco de datos de pandas

calcular el valor promedio del marco de datos de pandas

Calcule el precio de compra promedio ponderado (tabla de operaciones con reinicio)

Promedio bayesiano en un marco de datos

Calcule la desviación estándar y promedio por 5 filas en un marco de datos de pandas

Calcule la desviación estándar y promedio por 5 filas en un marco de datos de pandas

Pandas: calcule el promedio ponderado por fila usando un marco de datos y una serie

Calcule el promedio ponderado con Pandas para disminuir el costo

Pandas: calcule el promedio ponderado por fila usando un marco de datos y una serie

Calcule la media en el marco de datos dada una frecuencia usando pandas

Promedio real en todos los valores de un marco de datos usando rolling with pandas

Promedio ponderado anual del marco de datos de pandas

¿Cómo pivotar un marco de datos de pandas para incluir un promedio ponderado?

Calcular el promedio ponderado de mi marco de datos

Cree una suma móvil y un promedio de diferentes variables en el marco de datos de pandas

promedio ponderado en una columna de marco de datos con la tasa ponderada proporcionada

¿Cómo calcular el promedio de valores en un marco de datos de Python Pandas?

La forma más eficiente de crear columnas de promedio ponderado desplazadas nuevas masivas en un marco de datos de pandas

Calcule el consumo promedio a partir de los datos en Pandas Dataframe

Calcule los resultados promedio ponderados para varias columnas en función de otro marco de datos en Pandas

¿Cómo se ponderan las columnas del marco de datos de forma iterativa para el promedio ponderado?

¿Cómo calcular el promedio de valores específicos en una columna en un marco de datos de pandas?

python pandas promedio ponderado con el uso de groupby agg()

Calcule los pesos de un promedio ponderado en Hojas de cálculo de Google o Excel