对一个csv文件的1000条数据集进行数据扩写到4000条Python
时间: 2023-11-27 16:49:33 浏览: 202
数据扩写是指通过对原有数据集进行一些变换或添加噪声等方式,生成更多的数据以增加数据量,从而提高模型的泛化能力和鲁棒性。
下面是一个简单的示例代码,使用随机变换方式对1000条数据进行扩写到4000条。
```python
import pandas as pd
import numpy as np
# 读取原始数据
df = pd.read_csv('data.csv')
# 定义随机变换函数
def random_transform(data):
# 随机选择一种变换方式
transform_type = np.random.choice(['add_noise', 'swap_columns', 'reverse_rows', 'none'])
# 添加噪声
if transform_type == 'add_noise':
noise = np.random.normal(size=data.shape)
data += noise
# 交换两列
elif transform_type == 'swap_columns':
col1, col2 = np.random.choice(data.columns, size=2, replace=False)
data[[col1, col2]] = data[[col2, col1]]
# 翻转行顺序
elif transform_type == 'reverse_rows':
data = data.iloc[::-1]
# 不进行变换
else:
pass
return data
# 扩写数据
new_data = []
for i in range(3000):
# 随机选择一条原始数据
row_index = np.random.choice(df.index)
row_data = df.loc[row_index].copy()
# 进行随机变换并添加到新数据集
new_data.append(random_transform(row_data))
# 将新数据集合并到原始数据集
new_df = pd.concat([df, pd.DataFrame(new_data)], ignore_index=True)
# 保存新数据集
new_df.to_csv('expanded_data.csv', index=False)
```
这个示例代码通过随机选择一种变换方式,对原始数据进行变换,生成新的数据。其中,`add_noise` 表示添加噪声,`swap_columns` 表示交换两列,`reverse_rows` 表示翻转行顺序,`none` 表示不进行变换。通过循环和随机选择,将变换后的数据添加到新数据集中。最后,将新数据集与原数据集合并并保存到文件中。
阅读全文