按照给定的CSV,以PatientID这列为准线,即相同PatientID的值视为同一个人,总443个人,按照80%(354个人)和20%(79个人)的比例,分裂出两个CSV,给出python
时间: 2024-09-11 18:06:07 浏览: 53
在Python中,你可以使用pandas库来处理CSV文件并根据指定条件将其分成两部分。以下是一个步骤示例:
```python
import pandas as pd
# 读取CSV文件
data = pd.read_csv('your_file.csv')
# 假设PatientID是DataFrame的第一列
# 验证数据是否存在
if 'PatientID' in data.columns:
# 创建一个新的DataFrame,只包含PatientID这一列
patient_ids = data['PatientID']
else:
print("PatientID列不存在")
exit()
# 统计PatientID的唯一值数量,确定分组比例
total_unique_patients = len(patient_ids.drop_duplicates())
split_ratio = {'train': 0.8, 'test': 0.2}
num_train = int(total_unique_patients * split_ratio['train'])
# 将PatientID按频率分布划分到训练集和测试集
unique_ids, counts = patient_ids.value_counts().sort_index(), patient_ids.value_counts()
train_indices = unique_ids[:num_train].index.tolist()
test_indices = list(set(unique_ids.index) - set(train_indices))
# 根据索引分割原始DataFrame
train_data = data.loc[data['PatientID'].isin(train_indices)]
test_data = data.loc[~data['PatientID'].isin(train_indices)]
# 保存新的CSV文件
train_data.to_csv('train_split.csv', index=False)
test_data.to_csv('test_split.csv', index=False)
阅读全文