pd.qcut возвращает отрицательные значения - PullRequest
0 голосов
/ 13 сентября 2018

Вот простой пример серии данных:

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]]

Это ожидаемое поведение?Я думал, что найду свои мин и макс как нижнюю и верхнюю границу моих категорий.

(я использую панды 0.22.0 и python-2.7)

1 Ответ

0 голосов
/ 13 сентября 2018

Это происходит потому, что процедура биннинга вычитает .001 из самого низкого значения в вашем диапазоне.Если ребра бина == точное число в вашей серии, неясно, в какой бин должен быть помещен номер.Таким образом, имеет смысл слегка отрегулировать min и max перед созданием qtiles.

См. Строки 210-213 в исходном коде для pd.cut.https://github.com/pandas-dev/pandas/blob/v0.23.4/pandas/core/reshape/tile.py#L210-L213

0.000078 -.001
Out[21]: -0.0009220000000000001
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...