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

我正在使用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 值。我怎样才能防止这种情况发生?


Helenr
浏览 159回答 1
1回答

忽然笑

您可以使用 apply 为每行计算一次此值,因此只有无效行才会是 nan,而不是整个结果。import pandas as pdimport numpy_financial as npf # i get a warning using np.ratei = { '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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python