我知道inf
代表什么。
我正在尝试做的事情:我正在尝试将数据框中存在的每个值相乘。
variavel_de_transformacao_1=variavel_de_transformacao_1.prod(axis=0)
但是,结果是给了我一个我无法代表的inf号码。谁能帮我 ?
return
1 1.000004
2 1.000002
3 1.000320
4 0.999982
5 0.998743
...
252 1.000432
但是我的结果是:
variável_de_transformacao_1= inf
答案 0 :(得分:1)
系列中的某处必须有numpy.inf
。如果您使用诸如final price / initial price
这样的表达式来计算收益,那么无论初始价格为零,都会出现一个inf
值。
您可以通过以下方式进行验证:
>>> assert not numpy.isinf(variavel_de_transformacao_1).any()
>>> assert numpy.isfinite(variavel_de_transformacao_1).all()
我尝试在包含所有大于1.0的正值的系列中调用prod
,以查看其是否溢出。
>>> s = pandas.Series(numpy.full(fill_value=1.01, shape=252))
>>> s.prod()
12.274002099240246
尝试更大的数字,则该产品不是inf
:
for value in [1.0, 1.01, 1.05, 1.25, 1.50]:
s = pandas.Series(numpy.full(fill_value=value, shape=252))
print("{:4.2f}: {:30.2f}".format(value, s.prod()))
Uniform elem. value Product
1.00: 1.00
1.01: 12.27
1.05: 218626.78
1.25: 2638294536026986064642048.00
1.50: 237135886481351290441812215478402248179974144.00