Как удалить значения бесконечности в кадре данных? - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь удалить все значения бесконечности и NaN в наборе данных, используя следующий код:

#loading data    
data_path = os.path.join('/home/~/Desktop/~/~/rf_recordings', 'WiFi_1.iqt')

nframes = 644571
iqdata = iqtools.GRData(data_path, fs = 5.12e+007, center=2.4415e+009)
iqdata.read_complete_file()
x_data = iqdata.get_spectrogram(nframes, lframes=1)

#trying to replace each inf and -inf into nan, then replace nan with mean value of x_data
df = pd.DataFrame(data = x_data)  
df.replace([np.inf, -np.inf], np.nan)           
df = np.nan_to_num(df, nan = np.mean(x_data[1]))
print(df)

Но полученный результат показывает, что исходные NaN были изменены на np.mean(x_data[1]), но изменение inf в nan не работает, как можно видеть следующим образом:

До

tensor([[[[0.0000e+00, 0.0000e+00, 0.0000e+00]]],


        [[[0.0000e+00, 0.0000e+00, 0.0000e+00]]],


        [[[0.0000e+00, 0.0000e+00, 0.0000e+00]]],


        ...,


        [[[       nan,        nan,        inf]]],


        [[[2.5295e-38,        nan,        nan]]],


        [[[       nan,        nan,        nan]]]])

После

tensor([[[[0.0000e+00, 0.0000e+00, 0.0000e+00]]],


            [[[0.0000e+00, 0.0000e+00, 0.0000e+00]]],


            [[[0.0000e+00, 0.0000e+00, 0.0000e+00]]],


            ...,


            [[[5.2155e-03, 5.2155e-03,        inf]]],


            [[[2.5295e-38, 5.2155e-03, 5.2155e-03]]],


            [[[5.2155e-03, 5.2155e-03, 5.2155e-03]]]])

Есть ли способ, которым я могу изменить / улучшить, пожалуйста?

1 Ответ

0 голосов
/ 12 марта 2020

DataFrame.replace() по умолчанию не работает на месте, возвращает новый фрейм данных.

Замените

df.replace([np.inf, -np.inf], np.nan)

либо:

df = df.replace([np.inf, -np.inf], np.nan)

, либо

df.replace([np.inf, -np.inf], np.nan, inplace=True)

, причем первый иногда рекомендуется, так как последний изменит любые другие виды на объект.

...