python - pd.qcut 返回负值

标签 python python-2.7 pandas

这是一个简单的数据样本系列:

sample
Out[2]: 
0    0.047515
1    0.026392
2    0.024652
3    0.022854
4    0.020397
5    0.000087
6    0.000087
7    0.000078
8    0.000078
9    0.000078

下限值为 0.000078,最大值为 0.047515。 当我在其上使用 qcut 函数时,结果为我的类别提供了负面数据。

pd.qcut(sample, 4)
Out[31]: 
0         (0.0242, 0.0475]
1         (0.0242, 0.0475]
2         (0.0242, 0.0475]
3         (0.0102, 0.0242]
4         (0.0102, 0.0242]
5       (8.02e-05, 0.0102]
6       (8.02e-05, 0.0102]
7    (-0.000922, 8.02e-05]
8    (-0.000922, 8.02e-05]
9    (-0.000922, 8.02e-05]
Name: data, dtype: category
Categories (4, interval[float64]): [(-0.000922, 8.02e-05] < (8.02e-05, 0.0102] < (0.0102, 0.0242] < (0.0242, 0.0475]]

这是预期的行为吗?我以为我会找到我的最小值和最大值作为我的类别的下限和上限。

(我使用的是 pandas 0.22.0 和 python-2.7)

最佳答案

发生这种情况是因为装箱过程从您范围内的最低值中减去 .001。如果 bin 的边缘 == 系列中的确切数字,则不清楚应将数字放入哪个 bin。因此,在创建 qtiles 之前稍微调整最小值和最大值是有意义的。

参见 pd.cut 源代码中的第 210-213 行。 https://github.com/pandas-dev/pandas/blob/v0.23.4/pandas/core/reshape/tile.py#L210-L213

0.000078 -.001
Out[21]: -0.0009220000000000001

关于python - pd.qcut 返回负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52313838/

相关文章:

python - 找不到 `protoc` 命令

python - 使用 Bash 的 Hadoop 流式传输——有多慢?

python - numpy.ndarray,其形状(高度、宽度、n)来自每个图像像素的 n 个值

python - 如何在数据仍在传输时从 http 响应 python 获得部分结果?

python - 在一个键中存储不同类型的值 - 字典

python - Autodoc FR (ADFR),在 MacOS BIG SUR 上安装

python - 属性错误 : 'module' object has no attribute 'PROTOCOL_TLSv1_2' with Python 2. 7.11

python - 迭代数据帧并替换为另一个数据帧中的值

python - 在 groupby 之后填充组中缺失的行

python - 计算每个单词出现的不同行数