#python #pandas
#python #pandas
Вопрос:
При чтении документации для pd.qcut?
я просто не мог понять ее написания, особенно с примерами, один из которых приведен ниже
>>> pd.qcut(range(5), 4)
... # doctest: ELLIPSIS
[(-0.001, 1.0], (-0.001, 1.0], (1.0, 2.0], (2.0, 3.0], (3.0, 4.0]]
Categories (4, interval[float64]): [(-0.001, 1.0] < (1.0, 2.0] ...
Почему он вернул 5 элементов в списке (хотя в коде указано 4 сегмента), а 2 первых элемента одинаковы (-0.001, 1.0)?
Спасибо.
Ответ №1:
Поскольку 0 находится в (-0.001, 1], то и 1 тоже.
range(5) # [0, 1, 2, 3, 4, 5]
Соответствующая категория [0, 1, 2, 3, 4, 5] является [(-0.001, 1.0], (-0.001, 1.0], (1.0, 2.0], (2.0, 3.0], (3.0, 4.0]].
Комментарии:
1. Спасибо, @quinlong! Я не заметил наполовину открытого диапазона ( ].
Ответ №2:
Посмотрите на range
list(range(5))
Out[116]: [0, 1, 2, 3, 4]
это возвращаемое число 5, когда вы выполняете qcut
, 0
, 1
считаются в одном диапазоне
pd.qcut(range(5), 4)
Out[115]:
[(-0.001, 1.0], (-0.001, 1.0], (1.0, 2.0], (2.0, 3.0], (3.0, 4.0]]
Categories (4, interval[float64]): [(-0.001, 1.0] < (1.0, 2.0] < (2.0, 3.0] < (3.0, 4.0]]
Комментарии:
1. извините, я не вижу ничего более ясного в вашем объяснении. Не должен ли диапазон
range(5)
быть [(0,1), (1,2), (2,3), (3,4)]? Почему в примере справочной документации было два диапазона (-0.001, 1.0)?2. @Jason причина в том, что один из диапазонов должен охватывать как 0, так и 1, (0,1) не будет включать 0
3. Ах, я думаю, что теперь я могу следить. Однако, почему он использовал bin (-0.001, 1.0) вместо (0.0, 1.0)?