相当于熊猫的百分比增长



有没有办法计算大熊猫(未来(的生长百分比?

Panda采用.pct_change方法计算某些列的变化百分比。

我想在未来做这件事——我的职责就是工作。然而,我发现使用for循环进行某些计算有点奇怪

def cf_future_projection(
cashflow_of_last_year: float,
cashflow_pct_grow: float,
last_observed_year: int,
n_year_future: int = 5,
) -> dict:
grow_values = {}
grow_values[last_observed_year + 1] = cashflow_of_last_year * (
1 + cashflow_pct_grow
)
for year in range(1, n_year_future):
grow_values[last_observed_year + 1 + year] = grow_values[
last_observed_year + 1 + year - 1
] * (1 + cashflow_pct_grow)
return grow_values

cf_future_projection(150, 0.15, 2020, 15)

有没有办法在熊猫身上做到这一点而不需要for循环?

当您运行cf_future_projection(150, 0.15, 2020, 15)时,您正在执行的基本计算是150*(1+0.15)^n for n years into the future,所以我认为您的函数虽然写得很好,但却不必要地复杂。

我不知道你的用例是什么,但我认为如果你想在最后创建一个带有新行的数据帧,一次添加一个新闻行是一项昂贵的操作,而且你可能不想像你提到的那样使用for循环来处理数据帧。您最好取下现有数据帧的最后一行,创建一个具有预测未来值的新数据帧,并将原始数据帧和新数据帧连接在一起。

例如,假设您从一个看起来像的数据帧开始

df = pd.DataFrame({'year':[2019,2020],'value':[140,150]})

要做类似于cf_future_projection(150, 0.15, 2020, 15)的事情,我们可以从数据帧中对应于2020的行中获取起始值,然后使用列表理解来创建我们新的未来值和未来年份。如果你愿意,你可以把这个操作包装在一个函数中

year,value = df[df['year'] == 2020].values[0]
n = 5
year_future = [2020 + i for i in range(1,n+1)]
value_future = [value*(1+0.15)**i for i in range(1,n+1)]
df_future = pd.DataFrame({'year':year_future,'value':value_future})
df_future = pd.concat([df,df_future])

结果:

>>> df_future
year       value
0  2019  140.000000
1  2020  150.000000
0  2021  172.500000
1  2022  198.375000
2  2023  228.131250
3  2024  262.350937
4  2025  301.703578

最新更新