python - 将 While 循环每次迭代的结果可视化为时间序列图
问题描述
initial_month = datetime.strptime('01-2018', '%m-%Y')
final_month = datetime.strptime('12-2020', '%m-%Y')
ppl_initial_comms = ppc_initial_comms = 6174
initial_leadpcpm = 4
ppl_price = 40
ppc_price = 400
ppl_new_comms = ppc_new_comms = 0
growth_years = ['2018','2019','2020']
leadpcpm_rate_dict = {}
ppl_rate_dict = {}
ppc_rate_dict = {}
ppl_cumul_rev_dict = {}
ppc_cumul_rev_dict = {}
#For Loop to calculate yearly MoM rates
for year in growth_years:
if year == '2018':
leadpcpm_rate_dict[year] = 5
ppl_rate_dict[year] = 6
ppc_rate_dict[year] = 0.9 * ppl_rate_dict[year]
elif year == '2019':
leadpcpm_rate_dict[year] = 4
ppl_rate_dict[year] = 4
ppc_rate_dict[year] = 0.9 * ppl_rate_dict[year]
elif year == '2020':
leadpcpm_rate_dict[year] = 1
ppl_rate_dict[year] = 2
ppc_rate_dict[year] = 0.9 * ppl_rate_dict[year]
#While loop to calculate MoM revenue growth over 3 years
while(initial_month != final_month+relativedelta(months=1)):
initial_year = str(initial_month.year)
if initial_year in growth_years:
ppl_new_leadpcpm = initial_leadpcpm + ((initial_leadpcpm*leadpcpm_rate_dict[initial_year]) / 100)
initial_leadpcpm = ppl_new_leadpcpm
ppl_new_comms = ppl_initial_comms + ((ppl_initial_comms*ppl_rate_dict[initial_year]) / 100)
ppl_initial_comms = ppl_new_comms
ppl_cumul_rev = ppl_new_comms * ppl_new_leadpcpm * ppl_price
ppl_cumul_rev_dict[initial_month] = ppl_cumul_rev
ppc_new_comms = ppc_initial_comms + ((ppc_initial_comms*ppc_rate_dict[initial_year]) / 100)
ppc_initial_comms = ppc_new_comms
ppc_cumul_rev = ppc_new_comms * ppc_price
ppc_cumul_rev_dict[initial_month] = ppc_cumul_rev
initial_month += relativedelta(months=1)
我正在尝试使用 MatPlotLib 在单个折线图(时间序列)中可视化 ppl 和 ppc 36 个月的运行总收入。但我不确定如何将结果解析为ppl_cumul_rev_dict
这样ppc_cumul_rev_dict
的 Dataframe:
Year PPLRevenue PPCRevenue
0 Jan 2018 1234 5678
1 Feb 2018 9112 10019
.. .. ..
35 Dec 2020 1000000 1500000
我尝试创建 2 个 ppl 和 ppc 收入字典,但我不知道如何将它们组合成一个 Dataframe 以供输入plt.plot
解决方案
您可以简单地将 dict 转换为pandas
Series,然后创建一个 DataFrame。
import pandas as pd
ppc_series = pd.Series(ppc_cumul_rev_dict)
ppl_series = pd.Series(ppl_cumul_rev_dict)
df = pd.DataFrame(data={'ppc': ppc_series, 'ppl': ppl_series})
推荐阅读
- angular - 如何删除以下异步 Typescript 函数的重复?
- algorithm - 最小化 K 行的三列最大值之和
- mysql - SQL 查询很慢。我怎样才能让它更快?
- ruby-on-rails - 在 Heroku CI 上运行 Capybara 测试时的 net::ERR_NAME_NOT_RESOLVED
- azure - 在 Azure 存储服务中挂载时如何更改文件夹或文件权限?
- python - 如果找不到元素或硒等待函数中发生超时异常,如何跳到下一个 url
- mysql - 如果某些条件适用,我需要更改表格上的列
- c - 随机数生成器 Windows 95
- c# - Servicestack:不支持指定的方法
- r - 在 R 中,无法在包 Vignette 文件中编写相同的代码。“列表”对象不能被强制输入整数