Как отбросить из DataFrame значения, составляющее менее 5% от общего числа?
В датасете в колонке представлены следующие значения
MICROLOANS 25910
DL 20200
ДО ЗАРПЛАТЫ 0107 18191
УНИВЕРСАЛЬНЫЙ НАЛИЧНЫМИ 15328
18_УНИВЕРСАЛЬНЫЙ НАЛИЧНЫМИ 12451
...
PIP1 1
"0-0-6" 1
Аннуитет на карту-2 1
TR01 1
КРЕДИТ "0-0-0-10" 1
Name: Тип займа, Length: 313, dtype: int64
Некоторые из них встречаются лишь единожды и статистически не значимы. Я бы хотел отбросить все значения, которые не составляют 5% от общего числа данных.
Я написал для этого функцию
def drop_less_signification_values(df_, col):
"""
Отбрасываем статистически не важные признаки (меньше 5% от общего числа)
"""
counts = df_[col].value_counts(normalize=True)
return df_[df[col].isin(counts.gt(0.05).index)]
После преобразования размер остается тем же
df['Тип займа'].count()
176289
df = drop_less_signification_values(df, 'Тип займа')
df['Тип займа'].count()
176289
В чем моя ошибка? Если какой то другой вариант, чтобы сделать это?
Ответы (1 шт):
Автор решения: user436281
→ Ссылка
Тоже была эта ошибка, надо так сделать:
def drop_less_signification_values(df_, col):
counts = df_[col].value_counts(normalize=True)
return df_[df[col].isin(counts[counts.gt(0.5)].index)]
df = pd.DataFrame(['a','a','a','b'], columns=["col"])
df
col
0 a
1 a
2 a
3 b
res = drop_less_signification_values (df, "col")
res
col
0 a
1 a
2 a