我对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。
感谢您的帮助!
答案 0 :(得分:0)
您可以在nan_policy='omit'
中使用stats.zscore
选项。参见here。
gpoa_z=stats.zscore(gpoa, nan_policy='omit')