.prod在熊猫中的结果给了我一个inf数,我怎么看结果

时间:2019-11-21 17:50:35

标签: python pandas dataframe

我知道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 

1 个答案:

答案 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