Estou trabalhando com dados de séries temporais nos quais estou tentando realizar a detecção de outliers usando o método IQR.
Dados de amostra:
import pandas as pd
import numpy as np
df = pd.DataFrame({'datecol' : pd.date_range('2024-1-1', '2024-12-31'),
'val' : np.random.random.randin(low = 100, high = 5000, size = 8366})
minha função:
def is_outlier(x):
iqr = x.quantile(.75) - x.quantile(.25)
outlier = (x <= x.quantile(.25) - 1.5*iqr) | (x >= x.quantile(.75) + 1.5*iqr)
return np.select([outlier], [1], 0)
df.groupby(df['datecol'].dt.weekday)['val'].apply(is_outlier)
para o qual a saída é algo como abaixo:
0 [1,1,0,0,....
1 [1,0,0,0,....
2 [1,1,0,0,....
3 [1,0,1,0,....
4 [1,1,0,0,....
5 [1,1,0,0,....
6 [1,0,0,1,....
Estou esperando uma única série como saída que eu possa adicionar de volta ao original dataframe
como uma coluna de sinalização.
Alguém pode me ajudar com isso?