maxframe.dataframe.DataFrame.sample#

DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None, always_multinomial=False)#

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

您可以使用 random_state 来保证结果的可重现性。

参数:
  • n (int, optional) -- 要从轴返回的项目数量。不能与 frac 同时使用。如果 frac 为 None,则默认值为 1。

  • frac (float, optional) -- 要返回的轴项目的比例。不能与 n 同时使用。

  • replace (bool, default False) -- 是否允许同一行被多次采样。

  • weights (str or ndarray-like, optional) -- 默认值 'None' 表示等概率加权。如果传入的是 Series,将根据索引与目标对象对齐。权重中存在但样本对象中不存在的索引值将被忽略,样本对象中存在但权重中不存在的索引值将被赋予零权重。如果在 DataFrame 上调用,当 axis = 0 时可以接受列名。除非权重是 Series,否则权重必须与所采样轴长度一致。如果权重之和不为 1,它们将被归一化为总和为 1。权重列中的缺失值将被视为零。不允许出现无穷值。

  • random_state (int, array-like, BitGenerator, np.random.RandomState, optional) -- 如果是 int、array-like 或 BitGenerator(NumPy>=1.17),则作为随机数生成器的种子;如果是 np.random.RandomState,则直接用作 numpy 的 RandomState 对象。

  • axis ({0 or ‘index’, 1 or ‘columns’, None}, default None) -- 要采样的轴。接受轴编号或名称。默认为给定数据类型的统计轴(Series 和 DataFrame 为 0)。

  • always_multinomial (bool, default False) -- 如果为 True,始终将数据块之间的样本计数分布视为多项分布。这在数据量很大时会加速采样,但在实例数量不是很大时可能会影响样本的随机性。

返回:

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

返回类型:

Series or DataFrame

参见

DataFrameGroupBy.sample

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

SeriesGroupBy.sample

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

numpy.random.choice

从给定的一维 numpy 数组中生成随机样本。

备注

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

示例

>>> import maxframe.dataframe as md
>>> df = md.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.execute()
        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).execute()
fish      0
spider    8
falcon    2
Name: num_legs, dtype: int64

带有放回的 DataFrame 的 50% 随机样本:

>>> df.sample(frac=0.5, replace=True, random_state=1).execute()
      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).execute()
        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).execute()
        num_legs  num_wings  num_specimen_seen
falcon         2          2                 10
fish           0          0                  8