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