Spec-Zone.ru › pandas 0.23

pandas.cut

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise') [source]

Разбиение значений на дискретные интервалы.

Используйте cut при необходимости сегментации и сортировки значений данных в интервалы. Эта функция также полезна для перехода от непрерывной переменной к категориальной. Например, cut может преобразовать возраст в группы возрастных диапазонов. Поддерживает разбиение на равное количество интервалов или на предварительно заданный массив интервалов.

Параметры:

x : массив-подобный объект

Входной массив для разбиения. Должен быть одномерным.

bins : целое число, последовательность скаляров или pandas.IntervalIndex

Критерии для разбиения.

  • целое число : Определяет количество интервалов с равной шириной в диапазоне x. Диапазон x расширяется на 0,1% с каждой стороны, чтобы включить минимальное и максимальное значения x.
  • последовательность скаляров : Определяет границы интервалов, допускающие неравномерную ширину. Расширение диапазона x не выполняется.
  • IntervalIndex : Определяет точные интервалы для использования.

right : bool, по умолчанию True

Указывает, включает ли bins правую границу или нет. Если right == True (значение по умолчанию), то bins [1, 2, 3, 4] обозначают (1,2], (2,3], (3,4]. Этот аргумент игнорируется, когда bins является IntervalIndex.

labels : массив или bool, необязательно

Определяет метки для полученных интервалов. Должен иметь такую же длину, как и полученные интервалы. Если False, возвращает только целочисленные индикаторы интервалов. Это влияет на тип контейнера вывода (см. ниже). Этот аргумент игнорируется, когда bins является IntervalIndex.

retbins : bool, по умолчанию False

Возвращать ли интервалы. Полезно, когда bins задано как скаляр.

precision : целое число, по умолчанию 3

Точность хранения и отображения меток интервалов.

include_lowest : bool, по умолчанию False

Первый интервал должен быть включительно слева или нет.

duplicates : {по умолчанию ‘raise’, ‘drop’}, необязательно

Если границы интервалов не уникальны, вызывать ValueError или удалять не уникальные.

Введено в версии 0.23.0.

Возвращает:

out : pandas.Categorical, Series или ndarray

Массив-подобный объект, представляющий соответствующий интервал для каждого значения x. Тип зависит от значения labels.

  • True (по умолчанию) : возвращает Series для Series x или pandas.Categorical для всех других входов. Сохраненные значения имеют тип Interval.
  • последовательность скаляров : возвращает Series для Series x или pandas.Categorical для всех других входов. Сохраненные значения имеют тот же тип, что и в последовательности.
  • False : возвращает ndarray целых чисел.

bins : numpy.ndarray или IntervalIndex.

Вычисленные или указанные интервалы. Возвращается только когда retbins=True. Для скалярного или последовательного bins, это ndarray с вычисленными интервалами. Если установлено duplicates=drop, bins будет удалять не уникальные интервалы. Для IntervalIndex bins, это равно bins.

См. также

qcut
Разбиение переменной на равные по размеру корзины, основанные на ранге или на выборочных квантилях.
pandas.Categorical
Тип массива для хранения данных, взятых из фиксированного набора значений.
Series
Одномерный массив с метками осей (включая временные ряды).
pandas.IntervalIndex
Неизменяемый индекс, реализующий упорядоченный, срезываемый набор.

Примечания

Любые значения NA будут NA в результате. Значения вне диапазона будут NA в результирующем Series или объекте pandas.Categorical.

Примеры

Разбить на три интервала равной ширины.

>>> pd.cut(np.array([1, 7, 5, 4, 6, 3]), 3)
... 
[(0.994, 3.0], (5.0, 7.0], (3.0, 5.0], (3.0, 5.0], (5.0, 7.0], ...
Categories (3, interval[float64]): [(0.994, 3.0] < (3.0, 5.0] ...
>>> pd.cut(np.array([1, 7, 5, 4, 6, 3]), 3, retbins=True)
... 
([(0.994, 3.0], (5.0, 7.0], (3.0, 5.0], (3.0, 5.0], (5.0, 7.0], ...
Categories (3, interval[float64]): [(0.994, 3.0] < (3.0, 5.0] ...
array([0.994, 3.   , 5.   , 7.   ]))

Находит те же интервалы, но назначает им конкретные метки. Обратите внимание, что категории возвращаемого Categorical являются labels и упорядочены.

>>> pd.cut(np.array([1, 7, 5, 4, 6, 3]),
...        3, labels=["bad", "medium", "good"])
[bad, good, medium, medium, good, bad]
Categories (3, object): [bad < medium < good]

labels=False подразумевает, что вам нужны только интервалы.

>>> pd.cut([0, 1, 1, 2], bins=4, labels=False)
array([0, 1, 1, 3])

Передача Series в качестве входного параметра возвращает Series с категориальным типом данных:

>>> s = pd.Series(np.array([2, 4, 6, 8, 10]),
...               index=['a', 'b', 'c', 'd', 'e'])
>>> pd.cut(s, 3)
... 
a    (1.992, 4.667]
b    (1.992, 4.667]
c    (4.667, 7.333]
d     (7.333, 10.0]
e     (7.333, 10.0]
dtype: category
Categories (3, interval[float64]): [(1.992, 4.667] < (4.667, ...

Передача Series в качестве входного параметра возвращает Series со значением отображения. Используется для отображения числовых значений на интервалы, основанные на интервалах.

>>> s = pd.Series(np.array([2, 4, 6, 8, 10]),
...               index=['a', 'b', 'c', 'd', 'e'])
>>> pd.cut(s, [0, 2, 4, 6, 8, 10], labels=False, retbins=True, right=False)
... 
(a    0.0
 b    1.0
 c    2.0
 d    3.0
 e    4.0
 dtype: float64, array([0, 2, 4, 6, 8]))

Используйте drop необязательный параметр, когда интервалы не уникальны

>>> pd.cut(s, [0, 2, 4, 6, 10, 10], labels=False, retbins=True,
...    right=False, duplicates='drop')
... 
(a    0.0
 b    1.0
 c    2.0
 d    3.0
 e    3.0
 dtype: float64, array([0, 2, 4, 6, 8]))

Передача IntervalIndex для bins приводит к этим категориям точно. Обратите внимание, что значения, не охваченные IntervalIndex, устанавливаются в NaN. 0 находится слева от первого интервала (который закрыт справа), а 1.5 находится между двумя интервалами.

>>> bins = pd.IntervalIndex.from_tuples([(0, 1), (2, 3), (4, 5)])
>>> pd.cut([0, 0.5, 1.5, 2.5, 4.5], bins)
[NaN, (0, 1], NaN, (2, 3], (4, 5]]
Categories (3, interval[int64]): [(0, 1] < (2, 3] < (4, 5]]

© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.cut.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API