pandas.cut()

Функция cut() разбивает числовой массив на интервалы (бины) и сопоставляет каждому значению соответствующую категорию. Часто применяется для дискретизации непрерывных величин — например, классификации температур по уровням «холодно/норма/жарко».

Сигнатура

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

Параметры

  • x — массив или Series.

  • bins — число интервалов или список границ.

  • right — включать правую границу.

  • labels — метки категорий или False для возврата кодов.

  • include_lowest — включать ли самую нижнюю границу.

  • retbins — возвращать ли границы интервалов.

Возвращаемое значение

Categorical или Series категорий (опционально + массив границ).

Примеры

Пример 1. Разбиение на N интервалов

import pandas as pd

s = pd.Series([1, 5, 10, 15, 20])
print(pd.cut(s, bins=2))
0    (0.981, 10.5]
1    (0.981, 10.5]
2    (0.981, 10.5]
3     (10.5, 20.0]
4     (10.5, 20.0]
dtype: category
Categories (2, interval[float64, right]): [(0.981, 10.5] < (10.5, 20.0]]

Пример 2. Пользовательские границы с метками

Классификация температурных режимов:

import pandas as pd

temp = pd.Series([15, 22, 28, 35, 5])
print(pd.cut(temp, bins=[-10, 18, 26, 50],
             labels=["cold", "normal", "hot"]))
0      cold
1    normal
2       hot
3       hot
4      cold
dtype: category
Categories (3, object): ['cold' < 'normal' < 'hot']

Пример 3. Возврат границ

import pandas as pd

s = pd.Series([1, 2, 3, 4, 5])
cats, bins = pd.cut(s, bins=2, retbins=True)
print(bins)
[0.996 3.    5.   ]

Пример 4. Числовые коды вместо меток

import pandas as pd

s = pd.Series([10, 20, 30, 40])
print(pd.cut(s, bins=[0, 15, 35, 100], labels=False))
0    0
1    1
2    1
3    2
dtype: int64

Пример 5. С include_lowest

import pandas as pd

s = pd.Series([0, 1, 2, 3])
print(pd.cut(s, bins=[0, 1, 3], include_lowest=True))
0    (-0.001, 1.0]
1    (-0.001, 1.0]
2       (1.0, 3.0]
3       (1.0, 3.0]
dtype: category
Categories (2, interval[float64, right]): [(-0.001, 1.0] < (1.0, 3.0]]

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.