pandas.core.groupby.DataFrameGroupBy.sample#
- DataFrameGroupBy.sample(n=None, frac=None, replace=False, weights=None, random_state=None)[源代码]#
为每个组返回一个随机样本。
您可以使用 random_state 来确保结果的可复现性。
- Parameters:
- nint, optional
为每个组返回的项数。不能与 frac 一起使用,并且不能大于最小组的大小,除非 replace 为 True。如果 frac 为 None,则默认为一。
- fracfloat,可选
要返回的项的分数。不能与 n 一起使用。
- replacebool,默认 False
允许或禁止同一行被抽样多次。
- weights类列表,可选
默认的 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 对象
- Returns:
- Series 或 DataFrame
一个与调用者相同类型的新对象,包含从调用对象中随机采样的项(在每个组内)。
参见
DataFrame.sample从 DataFrame 对象生成随机样本。
numpy.random.choice从给定的 1-D numpy 数组生成随机样本。
Examples
>>> 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