【发布时间】:2017-03-07 08:48:27
【问题描述】:
我有一系列大约 200000 个值,其中 >50% 是 NaN 和 0。理想情况下,我想使用 qcut() 对我的值进行分箱,但由于分箱边缘不唯一,这给了我一个错误.我将如何对分位数 1 中的所有 NaN 值和分位数 2 中的 0 值进行分类,然后对分位数标签 3 到 10 中的其余非零值进行分类(假设我想要 10 个分位数)
【问题讨论】:
我有一系列大约 200000 个值,其中 >50% 是 NaN 和 0。理想情况下,我想使用 qcut() 对我的值进行分箱,但由于分箱边缘不唯一,这给了我一个错误.我将如何对分位数 1 中的所有 NaN 值和分位数 2 中的 0 值进行分类,然后对分位数标签 3 到 10 中的其余非零值进行分类(假设我想要 10 个分位数)
【问题讨论】:
您可以为 qcut 提供一个指定分布的数组(docs 中的示例是 [0, .25, .5, .75, 1.] 用于分位数。因此,首先用 -1 填充 NaN 到确保它们出现。然后指定具有此分布的存储桶数组:
[0,
count(-1)/df.shape[0],
(count(-1)+count(0))/df.shape[0],
(count(-1)+count(0))/df.shape[0] + 1.*(df.shape[0] - count(-1)+count(0))/7,
(count(-1)+count(0))/df.shape[0] + 2.*(df.shape[0] - count(-1)+count(0))/7,
#...
1]
【讨论】: