pandas.core.groupby.DataFrameGroupBy.sample #
- DataFrameGroupBy。样本(n = None, frac = None, replace = False, weights = None, random_state = None)[来源] #
返回每组中项目的随机样本。
您可以使用random_state来实现可重复性。
- 参数:
- n整数,可选
每组返回的项目数。不能与frac一起使用 ,并且不得大于最小组,除非 Replace为 True。如果frac为 None,则默认值为 1 。
- 压裂浮子,可选
要返回的项目的比例。不能与n一起使用。
- 替换bool,默认 False
允许或禁止对同一行多次采样。
- 权重列表式,可选
默认 None 会导致相等的概率加权。如果传递类似列表,则值必须与基础 DataFrame 或 Series 对象具有相同的长度,并且在每个组内标准化后将用作采样概率。值必须是非负数,并且每组中至少有一个正元素。
- random_state int,类似数组,BitGenerator,np.random.RandomState,np.random.Generator,可选
如果是 int、类数组或 BitGenerator,则为随机数生成器的种子。如果是 np.random.RandomState 或 np.random.Generator,请按给定方式使用。
版本 1.4.0 中更改:现在接受 np.random.Generator 对象
- 返回:
- 系列或数据框
与调用者类型相同的新对象,包含从调用者对象的每组中随机采样的项目。
也可以看看
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