pandas.DataFrame.sample #

数据框。样本n = None frac = None replace = False weights = None random_state = None axis = None ignore_index = False[来源]

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

您可以使用random_state来实现可重复性。

参数
n整数,可选

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

压裂浮子,可选

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

替换bool,默认 False

允许或禁止对同一行多次采样。

权重str 或类似 ndarray,可选

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

random_state int,类似数组,BitGenerator,np.random.RandomState,np.random.Generator,可选

如果是 int、类数组或 BitGenerator,则为随机数生成器的种子。如果是 np.random.RandomState 或 np.random.Generator,请按给定方式使用。

版本 1.4.0 中更改:现在接受 np.random.Generator 对象

axis {0 或 'index', 1 或 'columns', None}, 默认 None

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

ignore_index bool,默认 False

如果为 True,则结果索引将标记为 0、1、...、n - 1。

1.3.0 版本中的新增功能。

返回
系列或数据框

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

也可以看看

DataFrameGroupBy.sample

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

SeriesGroupBy.sample

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

numpy.random.choice

从给定的一维 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

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

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

随机 50% 的样本DataFrame进行替换:

>>> 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