首页 > 解决方案 > 将 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

标签: pythonpandasmatplotlib

解决方案


您可以简单地将 dict 转换为pandasSeries,然后创建一个 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})

推荐阅读