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.