pandas.DataFrame.sample#

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

从对象的轴返回一个随机样本项。

你可以使用 random_state 以实现可重复性。

参数:
nint, 可选

从轴返回的项目数。不能与 frac 一起使用。如果 frac = None,默认 = 1。

frac浮点数, 可选

返回的轴项的分数。不能与 n 一起使用。

替换bool, 默认 False

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

权重str 或类 ndarray,可选

默认 None 会导致等概率加权。如果传递一个 Series,将会与目标对象的索引对齐。权重中的索引值在采样对象中找不到的将被忽略,采样对象中在权重中找不到的索引值将被分配零权重。如果在 DataFrame 上调用,当 axis = 0 时,将接受列名。除非权重是一个 Series,否则权重必须与被采样的轴长度相同。如果权重总和不等于 1,它们将被标准化为总和为 1。权重列中的缺失值将被视为零。不允许无限值。

random_stateint, 类数组, BitGenerator, np.random.RandomState, np.random.Generator, 可选

如果是整数、类数组或 BitGenerator,则为随机数生成器的种子。如果是 np.random.RandomState 或 np.random.Generator,则按给定使用。默认 None 会导致使用当前 np.random 状态进行采样。

在 1.4.0 版本发生变更: 现在接受 np.random.Generator 对象

{0 或 ‘index’, 1 或 ‘columns’, None}, 默认 None

要采样的轴。接受轴号或名称。默认值是给定数据类型的统计轴。对于 Series,此参数未使用,默认值为 None

ignore_indexbool, 默认 False

如果为真,生成的索引将被标记为 0, 1, …, n - 1。

Added in version 1.3.0.

返回:
系列或数据框

一个与调用者类型相同的新对象,包含从调用者对象中随机抽样的 n 个项目。

参见

DataFrameGroupBy.sample

从 DataFrame 对象的每个组中生成随机样本。

SeriesGroupBy.sample

从 Series 对象的每个组中生成随机样本。

numpy.random.choice

从一个给定的1-D numpy数组生成一个随机样本。

备注

如果 frac > 1,replacement 应设置为 True

例子

>>> df = pd.DataFrame(
...     {
...         "num_legs": [2, 4, 8, 0],
...         "num_wings": [2, 0, 0, 0],
...         "num_specimen_seen": [10, 2, 1, 8],
...     },
...     index=["falcon", "dog", "spider", "fish"],
... )
>>> df
        num_legs  num_wings  num_specimen_seen
falcon         2          2                 10
dog            4          0                  2
spider         8          0                  1
fish           0          0                  8

Series df['num_legs'] 中提取3个随机元素:请注意,我们使用 random_state 以确保示例的可重复性。

>>> df["num_legs"].sample(n=3, random_state=1)
fish      0
spider    8
falcon    2
Name: num_legs, dtype: int64

带有替换的 DataFrame 的随机 50% 样本:

>>> df.sample(frac=0.5, replace=True, random_state=1)
      num_legs  num_wings  num_specimen_seen
dog          4          0                  2
fish         0          0                  8

一个带有替换的 DataFrame 的上采样示例:请注意,对于 frac 参数 > 1,replace 参数必须为 True

>>> df.sample(frac=2, replace=True, random_state=1)
        num_legs  num_wings  num_specimen_seen
dog            4          0                  2
fish           0          0                  8
falcon         2          2                 10
falcon         2          2                 10
fish           0          0                  8
dog            4          0                  2
fish           0          0                  8
dog            4          0                  2

使用 DataFrame 列作为权重。在 num_specimen_seen 列中具有较大值的行更有可能被采样。

>>> df.sample(n=2, weights="num_specimen_seen", random_state=1)
        num_legs  num_wings  num_specimen_seen
falcon         2          2                 10
fish           0          0                  8