将Excel财务模型移植到Python-Pandas中并进行螺旋计算

2024-09-26 22:44:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力将Excel财务模型替换成Python Pandas。我所说的财务模型是指预测一家企业的现金流、损益表和资产负债表,而不是对掉期/期权进行定价,或者使用股票价格数据,这些数据也被称为财务模型。很可能同样的概念和问题也适用于后一种类型,我只是不太了解它们,所以不能发表评论。在

到目前为止,我喜欢我看到的很多东西。我在Excel中使用的模型在页面顶部有一个共同的时间序列,定义了我们感兴趣的预测时间段。然后计算将页面作为一系列行向下运行。因此,每一行都是TimeSeries对象,或者一个行集合成为DataFrame。显然,您需要在这两个结构之间进行转置读取,但这是一个微不足道的转换。在

更好的是,每个Excel行都应该有一个通用的、单一的公式,并且只基于页面上的行。这使得它有助于向量运算,计算速度快,使用Pandas编写也很简单。在

我遇到的问题是当我试图建立一个螺旋式计算模型时。这些通常用于模拟会计余额,其中一个期间的期初余额是上一个期间的期末余额。不能使用.shift()操作,因为给定期间的期末余额取决于同一期间的期初余额。最好用一个例子来说明:

Time              2013-04-01   2013-05-01   2013-06-01   2013-07-01   ...

Opening Balance            0           +3           -2          -10     
[...]
Some Operations           +3           -5           -8          +20
[...]
Closing Balance           +3           -2          -10          +10

在伪代码中,我对如何计算这类事情的解决方案如下。这不是一个矢量化的解决方案,而且看起来速度很慢

^{pr2}$

我可以看出,如果你只有一到两行操作,可能会有一些巧妙的方法来引导计算,我很高兴听到人们对这些技巧有什么建议。在

不过,我要做的一些螺旋钻有100个中间操作。在这种情况下,我最好的方法是什么?它是为了接受Python缓慢的性能吗?我应该迁移到赛顿吗?我还没有真正研究过它(所以可能有点离谱),但后一种方法的问题是,如果我要把100行代码移到C语言中,为什么首先要用Python呢,它感觉不像是简单的提升和转换?在


Tags: 数据方法代码模型pandas页面解决方案excel
1条回答
网友
1楼 · 发布于 2024-09-26 22:44:45

下面将进行就地更新,这将提高性能

import pandas as pd
import numpy as np
book=pd.DataFrame([[0, 3, np.NaN],[np.NaN,-5,np.NaN],[np.NaN,-8,np.NaN],[np.NaN,+20,np.NaN]], columns=['ob','so','cb'], index=['2013-04-01', '2013-05-01', '2013-06-01', '2013-07-01'])
for row in book.index[:-1]:
    book['cb'][row]=book.ix[row, ['ob', 'so']].sum()
    book['ob'][book.index.get_loc(row)+1]=book['cb'][row]
book['cb'][book.index[-1]]=book.ix[book.index[-1], ['ob', 'so']].sum()
book

相关问题 更多 >

    热门问题