Python pandas.DataFrame.sample函数方法的使用

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.sample方法的使用。

DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None) [source]

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

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

参数

int, 可选

从轴返回的项目数。 不能与frac一起使用。 

如果frac = None,则Default = 1

frac float, 可选

要返回的轴项的Fraction。不能与n一起使用。

replacebool, 默认为 False

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

weights strndarray-like, 可选

默认的‘None’将导致相等的概率权重。

如果传递了一个Series,将与目标对象上的索引对齐。

权重中未被采样对象发现的索引值将被忽略,

权重中未被采样对象的索引值将被赋值为零。

如果在DataFrame上调用,

将在axis = 0时接受列的名称。

除非权值是一个Series,

否则权值必须与被采样的轴线长度相同。

如果权重的和不是1,它们将被规范化为和为1

weights列中缺失的值将被视为零。不允许无限值。

random_state :int,array-like

BitGenerator, np.random.RandomState, 可选

如果intarray-like,或BitGenerator (NumPy>=1.17)

种子为随机数生成器,如果np.random。随机状态,用作numpy随机状态对象。

在版本1.1.0中改变:array-likeBitGenerator(用于NumPy>=1.17),

对象现在作为种子传递给np.random.RandomState()

axis :{0 ‘index’, 1 ‘columns’, None}, 默认为 None

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

Default = 1

返回值

Series DataFrame

与调用者相同类型的新对象,

包含从调用者对象中随机取样的n项。

Notes

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

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

DataFramewith替换的upsample样本:请注意,对于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

推荐阅读
cjavapy编程之路首页