pandas.qcut()

Функция qcut() делит массив на корзины так, чтобы в каждой было примерно одинаковое количество элементов (квантильная дискретизация). В отличие от cut(), границы выбираются по распределению данных.

Сигнатура

pandas.qcut(x, q, labels=None, retbins=False, precision=3,
            duplicates="raise")

Параметры

  • x — 1D-массив или Series.

  • q — число равночисленных корзин или список квантилей (например, [0, 0.25, 0.5, 1]).

  • labels — метки для корзин; False — целочисленные индексы.

  • retbins — вернуть и границы.

  • duplicates — что делать при дублирующихся границах: "raise" или "drop".

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

Categorical или Series с метками корзин.

Примеры

Пример 1. Квартили показаний АЦП

import pandas as pd

adc = pd.Series([10, 200, 400, 600, 800, 1000, 1023, 50])
print(pd.qcut(adc, q=4, labels=["low", "mid-lo", "mid-hi", "high"]))
0       low
1       low
2    mid-lo
3    mid-hi
4    mid-hi
5      high
6      high
7       low
dtype: category
Categories (4, object): ['low' < 'mid-lo' < 'mid-hi' < 'high']

Пример 2. С возвратом границ

import pandas as pd

s = pd.Series([1, 2, 3, 4, 5, 6, 7, 8])
cats, bins = pd.qcut(s, q=2, retbins=True)
print(bins)
[1.  4.5 8. ]

Пример 3. Произвольные квантили

import pandas as pd

s = pd.Series([10, 20, 30, 40, 50, 60, 70, 80, 90, 100])
print(pd.qcut(s, q=[0, 0.1, 0.9, 1.0], labels=["min", "norm", "max"]))
0     min
1    norm
2    norm
3    norm
4    norm
5    norm
6    norm
7    norm
8    norm
9     max
dtype: category
Categories (3, object): ['min' < 'norm' < 'max']

Пример 4. Целые метки

import pandas as pd

s = pd.Series([1, 2, 3, 4, 5, 6])
print(pd.qcut(s, q=3, labels=False))
0    0
1    0
2    1
3    1
4    2
5    2
dtype: int64

Пример 5. duplicates=»drop» при повторяющихся значениях

import pandas as pd

s = pd.Series([1, 1, 1, 2, 3])
print(pd.qcut(s, q=4, duplicates="drop"))
0    (0.999, 1.5]
1    (0.999, 1.5]
2    (0.999, 1.5]
3      (1.5, 2.0]
4      (2.0, 3.0]
dtype: category
Categories (3, interval[float64, right]): [(0.999, 1.5] < (1.5, 2.0] < (2.0, 3.0]]

См. также

Примечание

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

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