Python之pandas的三种sample采样方法 | 您所在的位置:网站首页 › excel随机抽取10个数 › Python之pandas的三种sample采样方法 |
可能只需要 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 实验室设备网 版权所有 |