pandas.core.groupby.SeriesGroupBy.sample#
- SeriesGroupBy.sample(n=None, frac=None, replace=False, weights=None, random_state=None)[源代码]#
从每个组中返回一个随机样本项。
你可以使用 random_state 以实现可重复性。
- 参数:
- nint, 可选
每个组返回的项目数。不能与 frac 一起使用,并且除非 replace 为 True,否则不能大于最小组的大小。如果 frac 为 None,默认值为 1。
- frac浮动, 可选
返回项目的一部分。不能与 n 一起使用。
- 替换bool, 默认 False
允许或不允许对同一行进行多次采样。
- 权重类似列表的,可选的
默认 None 会导致等概率加权。如果传递一个类似列表的对象,则值的长度必须与底层 DataFrame 或 Series 对象的长度相同,并且在每个组内归一化后将用作采样概率。值必须为非负数,并且在每个组内至少有一个正元素。
- random_stateint, array-like, BitGenerator, np.random.RandomState, np.random.Generator, 可选
如果是整数、类数组或 BitGenerator,则为随机数生成器的种子。如果是 np.random.RandomState 或 np.random.Generator,则按给定使用。默认
None
会导致使用当前 np.random 状态进行采样。在 1.4.0 版本发生变更: np.random.Generator 对象现在被接受
- 返回:
- Series 或 DataFrame
调用者对象的相同类型的新对象,包含从调用者对象的每个组中随机抽样的项目。
参见
DataFrame.sample
从 DataFrame 对象生成随机样本。
Series.sample
从 Series 对象生成随机样本。
numpy.random.choice
从一个给定的 1-D 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