Я пытаюсь применить фильтр савгола от SciPy, чтобы сгладить мои данные.Я успешно применил фильтр, выделив каждый столбец отдельно, определив новое значение y и построив его.Однако я хотел применить эту функцию более эффективным образом на всем фрейме данных.
y0 = alldata_raw.iloc[:,0]
w0 = savgol_filter(y0, 41, 1)
Моей первой мыслью было создать пустой массив, написать цикл for, применить функцию к каждому столбцу, добавить ее кмассив и, наконец, объединить массив.Однако я получил ошибку 'TypeError: невозможно объединить объект типа "";действительны только объекты pd.Series, pd.DataFrame и pd.Panel (не рекомендуется).
smoothed_array = []
for key,values in alldata_raw.iteritems():
y = savgol_filter(values, 41, 1)
smoothed_array.append(y)
alldata_smoothed = pd.concat(smoothed_array, axis=1)
Вместо этого я попытался использовать функцию pd.apply (), однако у меня возникли проблемы с этим.У меня есть сообщение об ошибке: «TypeError: ожидается, что x и y будут иметь одинаковую длину»
alldata_smoothed = alldata_raw.apply(savgol_filter(alldata_raw, 41, 1), axis=1)
print(alldata_smoothed)
Я новичок в python, поэтому любые советы о том, как заставить каждый метод работать и какой предпочтительнее, будутоценили!