Spec-Zone.ru › pandas 0.25

pandas.cut

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

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

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

Параметры:
x : array-like

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

bins : int, sequence of scalars, or IntervalIndex

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

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

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

labels : array or bool, optional

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

retbins : bool, default False

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

precision : int, default 3

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

include_lowest : bool, default False

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

duplicates : {default ‘raise’, ‘drop’}, optional

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

Новое в версии 0.23.0.

Возвращает:
out : Categorical, Series, or ndarray

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

  • True (по умолчанию): возвращает Series для Series x или Categorical для всех других входных данных. Значения хранятся в типе Interval.
  • последовательность скаляров: возвращает Series для Series x или Categorical для всех других входных данных. Значения хранятся в типе соответствующей последовательности.
  • False: возвращает одномерный массив целых чисел.
bins : numpy.ndarray or IntervalIndex.

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

См. также

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

Примечания

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

Примеры

Разбиение на три равных интервала.

>>> pd.cut(np.array([1, 7, 5, 4, 6, 3]), 3)
... # doctest: +ELLIPSIS
[(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)
... # doctest: +ELLIPSIS
([(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)
... # doctest: +ELLIPSIS
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)
... # doctest: +ELLIPSIS
(a    0.0
 b    1.0
 c    2.0
 d    3.0
 e    4.0
 dtype: float64, array([0, 2, 4, 6, 8]))

Используйте drop опцию, когда bins не уникальны

>>> pd.cut(s, [0, 2, 4, 6, 10, 10], labels=False, retbins=True,
...        right=False, duplicates='drop')
... # doctest: +ELLIPSIS
(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.25.0/reference/api/pandas.cut.html

Spec-Zone.ru

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