Python:如何计算年份之间按月产生的收入?

Posted

技术标签:

【中文标题】Python:如何计算年份之间按月产生的收入?【英文标题】:Python: How to calculate revenue which is generated by month between years? 【发布时间】:2022-01-20 11:27:36 【问题描述】:

以下数据集中的列将具有:

A:合约开仓日期;

B:合约终止日期;

C:与合同相关联的唯一帐户 ID(可以有多个合同针对一个 ID)

D:合同期间的每月收入 - 为简单起见,假设从第一个月合同产生的收入假定为合同结束前一个月的收入

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

等等…… 我想计算以下内容:

    从 2013 年 1 月到 2014 年 12 月,每个月产生了多少收入? 从 2013 年 1 月到 2014 年 12 月,按月有多少有效合同(该月产生的收入)? 从 2013 年 1 月到 2014 年 12 月,每月有多少活跃帐户(从至少一份合同产生的收入)?

我尝试了以下代码: 我能够使用 sum() 来获得收入,但我不确定除此之外还能做什么。

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

我从上面的代码得到的结果:

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

我需要计算以下。 如何在 python 中实现这一点?

【问题讨论】:

您使用的是哪个 dbms? (在日期/时间方面,许多产品远不符合 ANSI SQL。) @jarlh SQL Server。我需要在 python/sql 中实现这一点 【参考方案1】:

您可以在任何一个地方执行此操作,也可以将两者结合使用。还有很多不同的方法可以解决这个问题。就个人而言,我会创建一个查询来提取一个月的信息,然后进行迭代,将结果存储在数组或临时表中。

对于该期间的一个月,查询将如下所示:

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

这将处理 1 和 2。#3 有点不同。这是整个期间集合中的一个简单计数(不同的 unique_account_field)。

【讨论】:

感谢您的回复。能否请您详细说明#3。就像,如果您能够为#3 提供示例查询,那将非常有帮助。你能看看这个吗***.com/questions/70396117/… 您是否要包含活动帐户子查询

以上是关于Python:如何计算年份之间按月产生的收入?的主要内容,如果未能解决你的问题,请参考以下文章

sql按月查询语句

创建一个计算每月总收入的 PL/SQL 过程。总计必须按月打印

pandas使用resample函数计算每个月的统计均值使用matplotlib可视化特定年份的按月均值

按月编写 SQL 查询

Django,Postgresql 按月聚合函数也使用年份

pandas使用pct_change函数计算月均值环比变化率使用matplotlib可视化特定年份的按月均值变化率(pct_change compute change rate)