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будет удалять не уникальные интервалы. Для 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) ... [(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