Spec-Zone.ru › pandas 2

pandas.cut

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

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

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

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

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

bins:int, последовательность скаляров или IntervalIndex

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

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

  • последовательность скаляров : Определяет грани интервалов, что позволяет иметь неравномерную ширину. Расширение диапазона x не выполняется.

  • IntervalIndex : Определяет точные интервалы, которые необходимо использовать. Обратите внимание, что IntervalIndex для bins должен быть непересекающимся.

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

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

labels:массив или False, по умолчанию None

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

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

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

precision:int, по умолчанию 3

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

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

Следует ли первый интервал включать нижнюю границу?

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

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

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

Являются ли метки упорядоченными? Применяется к возвращаемым типам Categorical и Series (с типом данных Categorical). Если True, результирующий категориальный тип будет упорядоченным. Если False, результирующий категориальный тип будет неупорядоченным (метки должны быть указаны).

Возвращаемые значения:
out:Categorical, Series или ndarray

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

  • None (по умолчанию): возвращает Series для Series x или Categorical для всех других входных данных. Сохраненные значения имеют тип Interval.

  • последовательность скаляров: возвращает Series для Series x или Categorical для всех других входных данных. Сохраненные значения имеют тип, соответствующий типу в последовательности.

  • False : возвращает ndarray целых чисел.

bins:numpy.ndarray или IntervalIndex.

Вычисленные или заданные интервалы. Возвращаются только при retbins=True. Для скалярных или последовательных bins, это ndarray с вычисленными интервалами. Если установлено 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)
... 
[(0.994, 3.0], (5.0, 7.0], (3.0, 5.0], (3.0, 5.0], (5.0, 7.0], ...
Categories (3, interval[float64, right]): [(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, right]): [(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']

ordered=False приведет к неупорядоченным категориям при передаче меток. Этот параметр можно использовать, чтобы разрешить не уникальные метки:

>>> pd.cut(np.array([1, 7, 5, 4, 6, 3]), 3,
...        labels=["B", "A", "B"], ordered=False)
['B', 'B', 'A', 'A', 'B', 'B']
Categories (2, object): ['A', 'B']

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, right]): [(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    1.0
 b    2.0
 c    3.0
 d    4.0
 e    NaN
 dtype: float64,
 array([ 0,  2,  4,  6,  8, 10]))

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

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

Передача 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.0, 1.0], NaN, (2.0, 3.0], (4.0, 5.0]]
Categories (3, interval[int64, right]): [(0, 1] < (2, 3] < (4, 5]]

© 2008–2022, 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/2.2.2/reference/api/pandas.cut.html

Spec-Zone.ru

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