按照给定的CSV,以PatientID这列为准线,相同PatientID的值为同一个人,按照80%和20%的比例,分裂出两个CSV
时间: 2024-09-10 16:24:42 浏览: 38
修改目录下Dicom图像PatientID-可在32位系统上运行.7z
在Python中,我们可以使用pandas库来处理CSV文件并根据指定条件将其分割成两部分。以下是一个简单的步骤指南:
首先,确保已经安装了`pandas`和可能需要用来分隔数据的`random`库(如果还没安装,可以使用`pip install pandas random`)。
```python
import pandas as pd
import random
# 读取CSV文件
def split_csv(input_file, output_prefix, ratio=0.8):
# 加载数据
df = pd.read_csv(input_file)
# 确保'PatientID'是唯一的
assert 'PatientID' in df.columns and df['PatientID'].nunique() == len(df), "PatientID must be unique"
# 根据指定比例随机划分数据
random.shuffle(df) # 首先打乱行顺序
n_rows = int(ratio * len(df))
train_df = df[:n_rows]
test_df = df[n_rows:]
# 保存训练集和测试集到新的CSV文件
train_output = f"{output_prefix}_train.csv"
test_output = f"{output_prefix}_test.csv"
train_df.to_csv(train_output, index=False)
test_df.to_csv(test_output, index=False)
# 使用函数,例如将名为'data.csv'的文件按80%和20%的比例分为'train_data.csv'和'test_data.csv'
split_csv('data.csv', 'train_data', 0.8)
```
在这个例子中,我们假设原始CSV文件名为`data.csv`,并且`PatientID`列是唯一的标识符。代码会创建两个新文件,分别是`train_data_train.csv`和`train_data_test.csv`,分别包含80%的数据作为训练数据和20%的数据作为测试数据。
如果你想要用80%和20%的比例进行划分,请调用上述`split_csv`函数,如果没有指定输出前缀,将会默认为`input_file`的名字加上地名。如果有其他需求或疑问,可以提出更具体的问题。
阅读全文