在 CSV 行的每个值中添加随机噪声

Posted

技术标签:

【中文标题】在 CSV 行的每个值中添加随机噪声【英文标题】:Add random noise in each value of CSV rows 【发布时间】:2021-12-27 08:45:01 【问题描述】:

我正在尝试向我的 csv 列添加一些随机噪声,但最后一列除外。

这是我的 csv 文件:

z-1            z-2          z-3        z-4         z-5        z-6           z-7     class
0.1305512   0.1301835   0.1295706   0.1287125   0.1276091   0.1262605   0.1246666     1
0.151239    0.1508714   0.1502585   0.1494004   0.148297    0.1469484   0.1453545      0
0.1463833   0.1461299   0.1456313   0.1448875   0.1438984   0.1426641   0.1411845     1
0.1422839   0.1419962   0.1414633   0.1406851   0.1396616   0.138393    0.136879       0
0.1452986   0.1450747   0.1446055   0.1438911   0.1429314   0.1417265   0.1402764      1
0.1354216   0.1351467   0.1346265   0.1338611   0.1328504   0.1315945   0.1300933       0
0.1458855   0.1456223   0.1451139   0.1443602   0.1433613   0.1421172   0.1406278      1
0.149526    0.1492658   0.1487604   0.1480096   0.1470137   0.1457725   0.144286       0
0.1452744   0.1450098   0.1444999   0.1437448   0.1427444   0.1414988   0.1400079      1
0.146562    0.1462768   0.1457463   0.1449706   0.1439496   0.1426834   0.1411719      0

我想在 [0.1, 0.12] 范围内的 CSV 行的每个值中添加噪声。

这是我的代码:

import pandas as pd
import random

df = pd.read_csv("./data/raw.csv")

noise = [random.uniform(0.1,0.12) for _ in range(5)] # 5 random floats in the range of 0.1 to 0.12
#print(noise)


for i in noise:
    print(i)
    df1 = df + round((df.iloc[:,:-1] + i),7) # round values after adding noise

df1.to_csv("./data/new.csv", index=False) # make new csv

我的代码产生了 5 种噪音,但只为每个值添加了一种噪音。

我想在每一行中随机添加所有生成的噪声。我的意思是 5 个噪音,随机添加到第一行,第二行,....等等。并制作新的 csv。

有可能吗?

任何帮助将不胜感激。

谢谢。

【问题讨论】:

您想用新生成的随机噪声改变数据框中的每个值吗? 感谢您的回复。价值不应该改变。它应该在同一个位置。 【参考方案1】:

如果您想为前 5 列中的每个值分别添加随机噪声,请执行以下操作:

df1 = pd.DataFrame()
for c in df.columns[0:5]:
    df1[c] = df[c] + [random.uniform(0.1,0.12) for _ in range(len(df[c]))] 

如果你想单独为每一列添加随机噪声:

df1 = pd.DataFrame()
for c in df.columns[0:5]:
   column_noise = random.uniform(0.1,0.12)
   df1[c] = df[c] + [column_noise for _ in range(len(df[c]))]

【讨论】:

谢谢areobe。让我试试,然后我会回到这里。 嗨,areobe,这会将我的整个 csv 更改为一列,如何在不更改行和列位置的情况下保存 csv? @Codeholic 你是什么意思?也许是因为你试图用excel打开它。如果要使用 excel 打开它,请打开 excel 并在“数据”选项卡中选择“来自文本”。 无论如何,我解决了我的问题,我必须制作空列表并将新数据附加到列表中。非常感谢。

以上是关于在 CSV 行的每个值中添加随机噪声的主要内容,如果未能解决你的问题,请参考以下文章

图像处理:随机添加椒盐噪声和高斯噪声Python

图像处理:随机添加椒盐噪声和高斯噪声Python

如何在 python 中向 Mnist 数据集添加 50% 的随机正常噪声

OpenCV给图像添加噪声

白噪声不添加随机字符串

使用python为音调添加随机噪声