为什么在系列数据不恒定的情况下,该系列为我提供了NAN的zscore

时间:2018-07-04 21:51:47

标签: python python-3.x scipy normalization nan

我对python中的z分数有疑问。我计划计算出库恩比率GPOA并以序列形式生成其z得分值。 这是我所做的:

 #Profitablity
    # GPOA
    gpoa=(ccm_['revt']-ccm_['cogs'])/ccm_['at']
    gpoa=np.array(gpoa)
    gpoa_z=stats.zscore(gpoa)
    print (gpoa)
    print(gpoa_z)

以下是输出:

[ 0.09561083  0.09561083  0.09561083 ...,  0.02845481  0.00311008  0.        ]
[ nan  nan  nan ...,  nan  nan  nan]

前几个数据给出了NAN,我可以理解。这是因为数据是恒定的,所以标准偏差为零,因此无法进行参数设置,并导致NAN。但是正如您所看到的,以下数据不再是常数,z得分仍然是NAN。

更新1:

我将gpoa从series更改为array,然后应用stats.zcore,仍然不起作用。

更新2:

#Profitablity
# GPOA
gpoa=(ccm_['revt']-ccm_['cogs'])/ccm_['at']
gpoa=np.array(gpoa, dtype=pd.Series)
gpoa_mean=np.mean(gpoa)
gpoa_std=np.std(gpoa)
gpoa_z=(gpoa-gpoa_mean)/gpoa_std
print(gpoa_z)

仍然无法正常工作。输出如下:

[nan nan nan ..., nan nan nan]

我的gpoa_mean是inf,它已经是float64。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以在nan_policy='omit'中使用stats.zscore选项。参见here

gpoa_z=stats.zscore(gpoa, nan_policy='omit')