pandas.core.groupby.DataFrameGroupBy.sample#

DataFrameGroupBy.sample(n=None, frac=None, replace=False, weights=None, random_state=None)[源代码]#

返回每个组中项目的随机样本。

您可以使用 random_state 为了重现性。

1.1.0 新版功能.

参数
n整型,可选

要为每个组返回的项目数。不能与一起使用 frac 并且不能大于最小组,除非 replace 是真的。如果满足以下条件,则默认为1 frac 是没有的。

frac浮动,可选

要退回的项目的分数。不能与一起使用 n

replace布尔值,默认为False

允许或不允许多次对同一行进行采样。

weights类似列表,可选

默认无将导致相同的概率权重。如果传递一个类似列表的值,则值必须与基础DataFrame或Series对象具有相同的长度,并将在每个组内标准化后用作抽样概率。值必须为非负值,并且每个组中至少有一个正元素。

random_stateInt,类似数组,BitGenerator,np随机.RandomState,np随机.Generator,可选

如果为int、类似数组或BitGenerator,则为随机数生成器的种子。如果为np.随机性.RandomState或np.随机性.Generator,则按给定方式使用。

在 1.4.0 版更改: 现已接受np.Ranom.Generator对象

退货
系列或DataFrame

与调用者类型相同的新对象,其中包含从调用者对象的每个组中随机采样的项。

参见

DataFrame.sample

从DataFrame对象生成随机样本。

numpy.random.choice

从给定的一维数字数组生成随机样本。

示例

>>> 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