Mam dataframe:Wymień odstających z kolumną kwantyl w Pandy dataframe
df = pd.DataFrame(np.random.randint(0,100,size=(5, 2)), columns=list('AB'))
A B
0 92 65
1 61 97
2 17 39
3 70 47
4 56 6
Oto 5% kwantyle:
down_quantiles = df.quantile(0.05)
A 24.8
B 12.6
A oto maska dla wartości, które są niższe niż kwantyli:
outliers_low = (df < down_quantiles)
A B
0 False False
1 False False
2 True False
3 False False
4 False True
Chcę ustawić wartości w df
niższe niż kwantyle na kwantyle kolumny . Mogę to zrobić tak:
df[outliers_low] = np.nan
df.fillna(down_quantiles, inplace=True)
A B
0 92.0 65.0
1 61.0 97.0
2 24.8 39.0
3 70.0 47.0
4 56.0 12.6
Ale na pewno nie powinno być bardziej elegancki sposób. Jak mogę to zrobić bez fillna
? Dzięki.
ty myśl jedno-liner: 'df [~ outliers_low] .fillna (down_quantiles, inplace = True)'? – EdChum
Pomyślałem, że powinno być więcej rodzimych pand w tym kierunku. Odpowiedź Nicila Maveli wyraźnie to pokazuje. – shda
Tak, zapomniałem o "masce", awansowałem na odpowiedź Nickila – EdChum