📜  以给定的比例随机划分 Pandas DataFrame(1)

📅  最后修改于: 2023-12-03 14:49:31.584000             🧑  作者: Mango

以给定的比例随机划分 Pandas DataFrame

在实际的数据处理中,我们有时需要随机划分给定的数据集。Python的pandas库提供了一种方便的方法,即使用sample函数从给定的DataFrame中随机抽取指定比例的行进行划分。

以下是实现此操作的代码片段:

import pandas as pd

# 读取数据集
data = pd.read_csv('data.csv')

# 随机划分比例
train_ratio = 0.8
val_ratio = 0.1
test_ratio = 0.1

# 随机抽取行
train_data = data.sample(frac=train_ratio, random_state=42)
val_test_data = data.drop(train_data.index)
val_data = val_test_data.sample(frac=val_ratio/(val_ratio+test_ratio), random_state=42)
test_data = val_test_data.drop(val_data.index)

# 输出划分后的数据集大小
print(f'Train data: {len(train_data)}')
print(f'Validation data: {len(val_data)}')
print(f'Test data: {len(test_data)}')

以上代码将给定的数据集随机划分为训练集、验证集和测试集,并输出它们的大小。

代码说明:

  1. 使用pandas的read_csv函数读取CSV数据集,并将其存储在名为data的DataFrame中。

  2. 指定划分比例,这里的例子中,训练集的比例为0.8,验证集和测试集各自占总数据集的0.1。

  3. 使用sample函数从data中随机抽取一定比例的行,形成训练集。

  4. 根据上一步得到的训练集,使用drop函数删除训练集中的行,形成验证集和测试集。

  5. 在验证集和测试集中,使用sample函数从原始数据中随机抽取指定比例的行。

  6. 使用drop函数删除验证集中的行,即可得到测试集。

  7. 输出训练集、验证集和测试集的大小。

使用以上代码,您可以方便地将给定的数据集随机划分,以进行机器学习模型的训练和测试,同时可以保证训练集、验证集和测试集的比例符合您的要求。