在数据帧的非零元素上应用噪声

时间:2018-05-02 13:29:53

标签: pandas

我对这个有点挣扎。

我有一个数据帧,我想仅对数据帧的非零元素应用高斯噪声。一个愚蠢的方法是:

mu, sigma = 0, 0.1 
for i in range(df.shape[0]):
    for j in range(df.shape[1]):
        if df.iat[i,j] != 0:
            df.iat[i,j] += np.random.normal(mu,sigma)

每个元素的噪声必须不同,我们每次都不会添加相同的值。

如果这只有效,我会很高兴。实际上由于某些原因它没有。相反,我得到了这个:

before noise

after noise

正如您在图像上看到的,对于A列和C列,它运行良好,但不适用于其他列。奇怪的是,仍有一个变化(+/- 1,远远超出高斯噪声之外的那个......)

我试着看看这是否是df.round()的一些小数问题,但没有出现。

所以我正在寻找另一种方法来应用我的噪音而不是解决这个奇怪的问题。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我相信你可以生成与orignal ERROR TypeError: Cannot read property 'subscribe' of undefined大小相同的数组,然后按where条件添加值:

DataFrame