pandas.core.groupby.DataFrameGroupBy.sample#

DataFrameGroupBy.sample(n=None, frac=None, replace=False, веса=None, random_state=None)[источник]#

Возвращает случайную выборку элементов из каждой группы.

Вы можете использовать random_state для воспроизводимости.

Параметры:
nint, необязательный

Количество элементов для возврата для каждой группы. Нельзя использовать с frac и не должен быть больше наименьшей группы, если только replace равно True. По умолчанию один, если frac равно None.

fracfloat, опционально

Доля элементов для возврата. Нельзя использовать с n.

replacebool, по умолчанию False

Разрешить или запретить выборку одной и той же строки более одного раза.

весаподобный списку, опционально

По умолчанию None приводит к равновесному взвешиванию вероятностей. Если передается список, то значения должны иметь ту же длину, что и базовый DataFrame или Series, и будут использоваться как вероятности выборки после нормализации внутри каждой группы. Значения должны быть неотрицательными с хотя бы одним положительным элементом в каждой группе.

random_stateint, array-like, BitGenerator, np.random.RandomState, np.random.Generator, optional

Если int, array-like или BitGenerator, начальное значение для генератора случайных чисел. Если np.random.RandomState или np.random.Generator, использовать как есть.

Изменено в версии 1.4.0: np.random.Generator объекты теперь принимаются

Возвращает:
Series или DataFrame

Новый объект того же типа, что и вызывающий, содержащий элементы, случайно выбранные в каждой группе из вызывающего объекта.

Смотрите также

DataFrame.sample

Генерировать случайные выборки из объекта DataFrame.

numpy.random.choice

Генерация случайной выборки из заданного одномерного массива numpy.

Примеры

>>> df = pd.DataFrame(
...     {"a": ["red"] * 2 + ["blue"] * 2 + ["black"] * 2, "b": range(6)}
... )
>>> df
       a  b
0    red  0
1    red  1
2   blue  2
3   blue  3
4  black  4
5  black  5

Выбрать одну строку случайным образом для каждого уникального значения в столбце a. random_state аргумент может использоваться для гарантии воспроизводимости:

>>> df.groupby("a").sample(n=1, random_state=1)
       a  b
4  black  4
2   blue  2
1    red  1

Установить frac для выборки фиксированных пропорций, а не количеств:

>>> df.groupby("a")["b"].sample(frac=0.5, random_state=2)
5    5
2    2
0    0
Name: b, dtype: int64

Управление вероятностями выборки внутри групп с помощью установки весов:

>>> df.groupby("a").sample(
...     n=1,
...     weights=[1, 1, 1, 0, 0, 1],
...     random_state=1,
... )
       a  b
5  black  5
2   blue  2
0    red  0