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:如何计算年份之间按月产生的收入?的主要内容,如果未能解决你的问题,请参考以下文章
创建一个计算每月总收入的 PL/SQL 过程。总计必须按月打印
pandas使用resample函数计算每个月的统计均值使用matplotlib可视化特定年份的按月均值
pandas使用pct_change函数计算月均值环比变化率使用matplotlib可视化特定年份的按月均值变化率(pct_change compute change rate)