如何为CSV除最后一列外的数值随机添加[0.1,0.12]范围的随机噪声
实现代码
import pandas as pd import random df = pd.read_csv("./data/raw.csv") # 生成5个指定范围的噪声值池 noise_pool = [random.uniform(0.1, 0.12) for _ in range(5)] # 为每行随机分配噪声池中的一个噪声值 row_noise = [random.choice(noise_pool) for _ in range(len(df))] # 仅对除最后一列外的所有列添加对应行的噪声,保留7位小数 df.iloc[:, :-1] = df.iloc[:, :-1].add(row_noise, axis=0).round(7) # 输出加噪后的新CSV文件 df.to_csv("./data/new.csv", index=False)
逻辑说明
- 先按需求生成包含5个[0.1,0.12]区间随机值的噪声池
- 遍历所有数据行,为每行随机从噪声池中抽取一个噪声值,确保所有噪声都从你生成的5个值里选取
- 利用pandas的按行广播机制,同一行所有非最后一列的数值统一加上分配到的噪声,精度保留7位小数
- 最后一列
class全程不参与计算,保持原有取值不变
内容的提问来源于stack exchange,提问作者Codeholic
相关产品推荐
相关产品推荐

