为了账号安全,请及时绑定邮箱和手机立即绑定

大型数据集上的 Numpy Rate 函数返回空值

大型数据集上的 Numpy Rate 函数返回空值

Helenr 2021-12-17 10:43:09
我正在使用numpy rate 函数来模拟贷款的Excel Rate函数。该函数在处理我的数据帧的子集(100 万条记录)时返回正确的结果。但是,在处理整个数据帧(超过 1000 万条记录)时,它会为所有数据返回空结果。这可能是内存问题吗?如果是这样,如何解决?我已经尝试对数据进行分块并使用 while/for 循环进行计算,但这并没有解决问题。这有效(虽然我遍历 1000 万条记录时没有):test = df2.iloc[:1000000,:]test = test.loc[:,['LoanTerm',Instalment,'LoanAmount']]test['True_Effective_Rate'] = ((1+np.rate(test['LoanTerm'],-test['Instalment'],test['LoanAmount'],0))**12-1)*100我试图让它发挥作用:df2['True_Effective_Rate'] = ((1+np.rate(df2['LoanTerm'],-df2['Instalment'],df2['LoanAmount'],0))**12-1)*100我看到过去有人问过一个类似的问题,当其中一个参数输入不正确时,返回的所有值都是空值。使用 numpy.rate,在 numpy 数组上意外返回 nan不过,我的数据框没有 0 值。我怎样才能防止这种情况发生?
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

您可以使用 apply 为每行计算一次此值,因此只有无效行才会是 nan,而不是整个结果。


import pandas as pd

import numpy_financial as npf # i get a warning using np.rate

i = {

 'LoanAmount': [5_000,20_000,15_000, 50_000.0, 14_000,1_000_000,10_000],

 'LoanTerm': [72, 12,60, 36,72,12,-1],

 'Instalment': [336.0,5000.0,333.0,0.0,-10,1000.0,20],}

df = pd.DataFrame(i)

df.apply(lambda x: npf.rate(nper=x.LoanTerm,pv=x.LoanAmount,pmt=-1*x.Instalment,fv=0),axis=1)

对于大型数据集,这会更慢,因为您无法利用矢量化。


您还可以将数据框条目过滤为仅有效值。很难重现无效的内容,因为您没有共享输入,但在我上面的示例中,贷款期限和分期付款都必须 > 0。


valid = df.loc[(df.Installment > 0) & (df.LoanTerm > 0)]

npf.rate(nper=valid.LoanTerm,pv=valid.LoanAmount,pmt=-1*valid.Installment,fv=0)


查看完整回答
反对 回复 2021-12-17
  • 1 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号