У меня есть фрейм данных, и меня попросили заменить выбросы в фрейме данных теоретическим минимумом / максимумом. Тем не менее, я не совсем уверен, что это значит.
Я думаю, что я рассчитал теоретический минимум / максимум -
outliers = pd.DataFrame(columns=['min', 'count below', 'max', 'count above'])
for col in df:
if pd.api.types.is_numeric_dtype(df[col]) and (len(df[col].value_counts()) > 0) and not all(df[col].value_counts().index.isin([0, 1])):
q1 = df[col].quantile(.25)
q3 = df[col].quantile(.75)
min = q1 - (1.5 * (q3 - q1))
max = q3 + (1.5 * (q3 - q1))
outliers.loc[col] = (min, df[col][df[col] < min].count(), max, df[col][df[col] > max].count())
Вот несколько строк моего фрейма данных:
age sex cp trestbps chol fbs restecg thalach exang oldpeak slope ca thal num
0 28 1 2 130 132 0 2 185 0 0.0 NaN NaN NaN 0
1 29 1 2 120 243 0 0 160 0 0.0 NaN NaN NaN 0
2 29 1 2 140 NaN 0 0 170 0 0.0 NaN NaN NaN 0
3 30 0 1 170 237 0 1 170 0 0.0 NaN NaN 6 0
4 31 0 2 100 219 0 1 150 0 0.0 NaN NaN NaN 0
5 32 0 2 105 198 0 0 165 0 0.0 NaN NaN NaN 0
.
.
.
fbs
также содержит 1
для нескольких значений
exang
также содержит 1
для нескольких значений
oldpeak
также содержит несколько плавает между 0
и 3
slope
в основном NaN
, но также содержит 1
и 2
для некоторых значений
thal
в основном NaN
но также содержит 3
, 6
и 7
для некоторых значений
num
также содержит 1
для почти половины значений
Итак, теперь я не уверен, как заменить выбросы теоретическим мин / макс.