python读取一个由许多csv文件组成的文件夹分别作为训练集和测试集,写代码
时间: 2024-02-07 22:02:14 浏览: 222
要读取一个由许多CSV文件组成的文件夹,并将它们分别作为训练集和测试集,可以使用Python的内置模块os和random来处理文件和随机化数据。下面是一个示例代码,展示了如何实现这个过程:
```python
import os
import random
import csv
def read_csv_file(file_path):
dataset = []
with open(file_path, 'r') as file:
csv_reader = csv.reader(file)
for row in csv_reader:
dataset.append(row)
return dataset
def split_dataset(folder_path, train_ratio):
train_dataset = []
test_dataset = []
file_list = os.listdir(folder_path)
random.shuffle(file_list)
train_size = int(len(file_list) * train_ratio)
for i, file_name in enumerate(file_list):
file_path = os.path.join(folder_path, file_name)
if i < train_size:
train_data = read_csv_file(file_path)
train_dataset.extend(train_data)
else:
test_data = read_csv_file(file_path)
test_dataset.extend(test_data)
return train_dataset, test_dataset
# 读取文件夹中的CSV文件并拆分为训练集和测试集
folder_path = 'dataset_folder' # 替换成你的文件夹路径
train_ratio = 0.8 # 训练集所占比例
train_set, test_set = split_dataset(folder_path, train_ratio)
# 打印训练集
print("Train Set:")
for row in train_set:
print(row)
# 打印测试集
print("Test Set:")
for row in test_set:
print(row)
```
在这个示例中,我们首先定义了一个`read_csv_file`函数,用于读取单个CSV文件并返回其数据集。然后,我们定义了一个`split_dataset`函数,它接受文件夹路径和训练集所占比例作为参数,并返回拆分后的训练集和测试集。
在`split_dataset`函数内部,我们使用`os.listdir`函数获取文件夹中的所有文件名,并使用`random.shuffle`函数对文件名进行随机化处理。然后,我们根据训练集所占比例将文件名列表分为训练集和测试集两部分。
接下来,我们遍历文件列表,根据文件名构建文件路径,并使用`read_csv_file`函数读取CSV文件的内容。如果文件属于训练集部分,则将其数据添加到训练集中;否则,将其数据添加到测试集中。
最后,我们调用`split_dataset`函数,将文件夹路径和训练集所占比例作为参数,并获取拆分后的训练集和测试集。你可以根据需要进一步处理这些数据集,例如进行模型训练或测试。请确保将`folder_path`变量替换为你实际的文件夹路径,并设置适当的训练集比例。
阅读全文