3 votes

Python : Comment calculer le revenu généré par mois entre les années ?

Les colonnes de l'ensemble de données ci-dessous auront :

A : Date d'ouverture du contrat ;

B : Date d'arrêt du contrat ;

C : Identifiant unique du compte auquel le contrat est associé (plusieurs contrats peuvent être associés à un même identifiant).

D : Revenu mensuel pour la période contractuelle - pour simplifier, on considère que le revenu est généré à partir du premier mois du contrat jusqu'au mois précédant la date de clôture du contrat.

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

etc.... Je voudrais calculer ce qui suit :

  1. Quel est le montant des recettes générées par mois entre janvier 2013 et décembre 2014 ?
  2. Combien de contrats actifs (ayant généré des revenus au cours du mois concerné) y a-t-il eu par mois entre janvier 2013 et décembre 2014 ?
  3. Combien de comptes actifs (générant des revenus d'au moins un contrat) y a-t-il eu par mois entre janvier 2013 et décembre 2014 ?

J'ai essayé le code ci-dessous : J'ai pu utiliser sum() pour obtenir les revenus, mais je ne sais pas trop quoi faire de plus.

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() 

Résultat obtenu avec le code ci-dessus :

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

J'ai besoin de calculer ce qui suit. Comment puis-je y parvenir en python ?

1voto

Tyler Hains Points 35

Vous pouvez le faire dans l'un ou l'autre lieu, ou en combinant les deux. Il existe également de nombreuses façons différentes d'aborder la question. Personnellement, je créerais une requête qui extrairait les informations pour un mois, puis je procéderais à une itération, en stockant les résultats dans un tableau ou une table temporaire.

Pour un seul mois de la période, la requête ressemblerait à ceci :

Select count(unique_account_field), sum(MRR)
from contracts
where Opp_start_date <= @month_end
and Opp_contract_end_date > @month_start

Cela permettrait de régler les points 1 et 2. #Le numéro 3 est un peu différent. Il s'agit d'un simple count(distinct unique_account_field) à partir de l'ensemble sur toute la période.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X