для замены верхней и нижней перцентили на медиану? Выполнить это для одного столбца по названию. Борьба с выбросами если попростому.
Находил для всего фрейма или только по верхней.
Можно попробовать выбросы обозначить как nan, а потом сделать fillna
да, попробовал. но что то никак не получается правильно сделать. даёт какаю то кривую выдачу.
down_quantiles = df["Values"].quantile(0.05) upper_quantiles = df["Values"].quantile(0.95) outliers = (df["Values"] < down_quantiles) & (df["Values"] > upper_quantiles) df[outliers] = np.nan df.fillna(down_quantiles, inplace=True) df
да я на игрушечном примере смотрю. От руки составил d = [1, 2, 16, 14, 15, 14, 13, 56 ] gg = [1, 2, 16, 14, 15, 14, 13, 56 ] na = ["afds", "asdf", "asdf", "asdf", "asdf", "asdf", "asdf", "adf"] df = pd.DataFrame({'Values': d, "Names": na, "prob":gg}) print(df) median = df['Values'].median() std = df['Values'].std()
Df.fillna(?) Посмотрите на что вы заменяете
df[df['values'] > upper_quantile | df['values'] < down_quantile] = df['values'].median() Если так?
У тебя & пересечение выбирает, попробуй | для объединения
А зачем на медиану? Мб посмотреть в сторону scipy.stats.mstats.winsorize?
Обсуждают сегодня