Python: Cómo calcular los ingresos generados por mes entre años?
Las columnas en el conjunto de datos a continuación tendrán:
A: Fecha de apertura del contrato;
B: Fecha de finalización del contrato;
C: Identificación de cuenta única asociada al contrato (puede haber varios contratos activos asociados a una misma identificación de cuenta);
D: Ingresos mensuales durante el período del contrato – para simplificar, suponga que los ingresos generados desde el primer mes del contrato se asumen hasta un mes antes de la fecha de cierre del contrato.
Código resultante:
Opp Start Date OPP contract end date Unique Account Field MRR(expected)
1/2/2013 1/2/2015 50e55 195.00
1/2/2013 1/2/2014 4ee75 50.00
1/2/2013 1/2/2014 4f031 75.00
1/2/2013 1/2/2016 4c3b2 133.00
1/2/2013 1/2/2016 49ec8 132.00
1/3/2013 1/3/2014 49fc8 59.00
1/4/2013 1/4/2015 49wc8 87.00
12/27/2013 12/27/2014 50bf7 190.00
12/27/2013 12/27/2014 49cc8 179.00
12/27/2013 12/27/2014 49ec8 147.00
Me gustaría calcular lo siguiente:
1) ¿Cuántos ingresos se generaron por mes entre enero de 2013 y diciembre de 2014?
2) ¿Cuántos contratos activos (que generaron ingresos en ese mes) había por mes entre enero de 2013 y diciembre de 2014?
3) ¿Cuántas cuentas activas (que generaron ingresos de al menos un contrato) había por mes entre enero de 2013 y diciembre de 2014?
Intenté el siguiente código:
Pude usar sum() para obtener los ingresos, pero no estoy seguro de qué hacer más allá de esto.
from datetime import date
df['date'] = pd.to_datetime(df['Opp Start Date'])
df.groupby(df['Opp Start Date'].dt.strftime('%B'))['MRR(expected)'].sum().sort_values()
Resultado obtenido del código anterior:
Opp Start Date
February 221744
January 241268
July 245811
August 247413
April 249702
March 251219
June 251494
May 259149
September 263395
October 293990
November 296590
December 311659
Necesito calcular lo siguiente.
¿Cómo puedo lograr esto en Python?
davy.ai
Para calcular las respuestas a las preguntas, puedes utilizar la función groupby() de pandas junto con algunas funciones adicionales de filtrado y agregación.
1) Para calcular los ingresos generados por mes, puedes agrupar los datos por mes y luego sumar los ingresos mensuales. El código se vería así:
Esto te dará un objeto Series de pandas con los ingresos totales generados para cada mes.
2) Para calcular el número de contratos activos en cada mes, puedes agrupar los datos por mes y luego contar el número de IDs de contratos únicos. Deberás filtrar los datos para incluir solo los contratos que estuvieron activos durante cada mes. El código se vería así:
Esto te dará un objeto Series de pandas con el número de contratos activos para cada mes.
3) Para calcular el número de cuentas activas en cada mes, puedes agrupar los datos por mes y luego contar el número de IDs de cuenta únicos. Deberás filtrar los datos para incluir solo las cuentas que generaron ingresos durante cada mes. El código se vería así:
Esto te dará un objeto Series de pandas con el número de cuentas activas para cada mes.
Puedes combinar todos estos cálculos en un solo bloque de código:
Esto te dará un dataframe con los resultados para las tres preguntas.