Каждый столбец (c) в кадре данных содержит временные ряды значений, которые содержат некоторые экстремальные выбросы, цель которых состоит в том, чтобы удалить их и заменить их на ранее увиденное значение.
Приведенный ниже код отлично работает для этой цели, но он очень медленный, так как мне нужно выполнить эту операцию для 7 отдельных столбцов и 59 кадров данных. Есть ли способ векторизовать эту операцию или ускорить ее другим способом?
Замена посторонних значений чем-либо, кроме ранее увиденного значения, на самом деле не вариант, поскольку это может повлиять на характер временных рядов данных.
for c in df.columns:
if c == "date":
continue
for i in range(len(dfn)):
if dfn[c].iloc[i] > 5*np.mean(dfn[c]):
dfn[c].iloc[i] = dfn[c].iloc[i-1]
end_df = end_df.append(dfn)
Пример ввода замены удаления выброса:
[10, 28, 39, 48193, 14]
Пример вывода замены удаления выброса:
[10, 28, 39, 39, 14]