Spec-Zone.ru › pandas 0.24

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 pandas.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 : pandas.Categorical, Series, or ndarray

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

  • True (по умолчанию) : возвращает Series для Series x или pandas.Categorical для всех других входных данных. Сохраненные значения имеют тип Interval.
  • последовательность скаляров : возвращает Series для Series x или pandas.Categorical для всех других входных данных. Сохраненные значения имеют тип заданной последовательности.
  • False : возвращает ndarray целых чисел.
bins : numpy.ndarray or 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)
... # 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 с типом данных categorical:

>>> 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 необязательно, когда интервалы не уникальны

>>> 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.24.2/reference/api/pandas.cut.html

Spec-Zone.ru

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