winsorize函数如何真正忽略NULL值

winsorize函数nanPolicy=‘omit’参数表示忽略NULL值,使用时发现,并没有真正忽略,而是把NULL值作为最大值计算,只是没有进行掩盖而已。不知这样设计的机理是什么,如何可以真正忽略NULL值呢?

x=1..100

x[80:90]=NULL

winsorize(x, 0.18,nanPolicy='omit')

attachments-2023-05-QC1Upzer6454c4cec77da.png


请先 登录 后评论

1 个回答

Polly

ddb 内部的 winsorize 处理规则和 python 一致,关于 python 的 omit 控制处理的说明,可以参照:https://github.com/scipy/scipy/issues/8327

可以了解到 winsorize 并不是真正忽略了空值,而只是保持不变或者说最大值处理了。

import numpy as np
from scipy.stats.mstats import winsorize

a = np.array([0, 4, 5, 6, 7, 8, 9, np.nan, np.nan, 15])
print(winsorize(a, limits=[0.3, 0.3], nan_policy="omit"))

output:[ 6.  6.  6.  6.  7.  8.  9. nan nan  9.]

x = 0 4 5 6 7 8 9 NULL NULL 15
winsorize(x, 0.3,nanPolicy='omit')
//output: [6,6,6,6,7,8,9,,,9] 
请先 登录 后评论
  • 1 关注
  • 0 收藏,663 浏览
  • Gaxia320 提出于 2023-05-05 17:03

相似问题