Python之pandas的三种sample采样方法 您所在的位置:网站首页 excel随机抽取10个数 Python之pandas的三种sample采样方法

Python之pandas的三种sample采样方法

2023-10-24 10:56| 来源: 网络整理| 查看: 265

可能只需要 Python dataframe的某些行。可以通过不同的采样(Sample)技术实现这一结果。

在本教程中,将通过Python Pandas执行行采样的以下技术:

随机抽样有条件采样以恒定速率采样

加载数据集

在本教程中,我利用库iris提供的数据集scikit-learn并将其转换为pandas数据帧:

from sklearn.datasets import load_iris import pandas as pd数据 = load_iris() df = pd.DataFrame(data.data, columns=data.feature_names)

数据集由 4 列 150 行。

随机抽样

给定一个包含 N 行的dataframe,随机采样从dataframe中提取 X 随机行,其中 X ≤ N。Pythonpandas提供了一个函数,命名sample()为执行随机采样。

要提取的样本数量可以用两种替代方式表示:

指定要提取的随机行的确切数量指定要提取的随机行的百分比。百分比表示为 0 到 1 之间的数字。确切数字

在这种情况下,可以将参数传递n给sample()函数,如下所示:

subset = df.sample(n=100)

在前面的示例中,该sample()函数提取了 100 条随机行。您可以subset通过以下shape函数检查结果数据集的形状:

subset.shape

这给出了以下输出:

(100, 4)百分比

如果要指定要提取的随机行的百分比,可以将frac参数作为sample()函数的输入传递:

subset = df.sample(frac=0.5)

在前面的示例中,该sample()函数提取了 50% 的随机行。请注意,您只能在n和frac参数之间指定一个。

有条件采样

带条件采样允许仅提取满足给定条件的一些行。首先,必须指定条件。例如,作为条件,您可以只选择列值sepal width (cm)小于 3 的行:

condition = df['sepal width (cm)'] < 3

变量condition是一系列大小相同的df,包含True/False,取决于行是否满足条件。

然后,检索与满足上述条件的行相关联的索引:

true_index = condition[condition == True].index

在当前示例中,有 57 行满足条件,因此您最多可以采样 57 行。

该sample()函数可用于按如下条件进行采样:

subset = df[condition].sample(n = 10)以恒定速率采样

另一种采样策略是以恒定速率采样,这意味着您希望两个相邻样本之间的距离恒定。例如,您可能希望以 4 的速率进行采样,如下图所示:

在这种情况下,您首先指定费率:

rate = 10

然后,您只需提取样本:

subset = df[::rate]

在iris数据集中,样本数为 150,因此采样率为 10 将生成具有 15 行的子集:

subset.shape

这给出了以下输出:

(15, 4)获取数据集的剩余部分

提取数据集的子集后,还可以提取剩余部分。例如,如果您想在不使用库train_test_split()提供的函数的情况下拆分训练集和测试集中的数据集,则可以使用此策略scikit-learn。

可以采用两种可能的解决方案来提取数据集的剩余部分。两种解决方案产生相同的结果。

第一个解决方案

第一种解决方案将提取的数据帧 ( subset)的行删除到原始数据帧中df,并将结果存储在新的数据帧中。这可以通过将要删除的索引列表传递给drop()函数来实现:

remaining = df.drop(labels=subset.index)第二种解决方案

第二种解决方案仅选择原始数据帧中的行,df其中索引不在提取的数据帧的索引列表中subset:

remaining = df[~df.index.isin(subset.index)]


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有