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должен быть неперекрывающимся.
- int : Определяет количество равномерно распределенных интервалов в диапазоне
-
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 целых чисел.
- True (по умолчанию) : возвращает Series для Series
-
bins : numpy.ndarray or IntervalIndex. -
Вычисленные или заданные интервалы. Возвращаются только когда
retbins=True. Для скалярного или последовательного значенияbins, это ndarray с вычисленными интервалами. Если установленоduplicates=drop,binsотбросит неуникальные интервалы. Для IntervalIndexbins, это равно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