-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathУдаление пропусков_ревью
21 lines (16 loc) · 1.5 KB
/
Удаление пропусков_ревью
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# код ревьюера для объяснения
print('Количество пропусков в tenure до заполнения:', df['tenure'].isna().sum())
print('Доля пропусков в tenure до заполнения:', df['tenure'].isna().mean())
# Создаем новый категориальный признак (0 или 1), что tenure содержит пропуск. Пусть модель
# при необходимости его использует
df['tenure_is_na'] = df['tenure'].isna().astype(int)
# заполняем пропуски в tenure медианой с группировкой по стране и возрасту клиента
# (в идеале лучше по возрастной группе с шагом лет в 10, пока пусть будет так)
df['tenure'] = df['tenure'].fillna(
df.groupby(['geography', 'age'])['tenure'].transform('median'))
print('Количество пропусков в tenure после заполнения:', df['tenure'].isna().sum())
# заполняем оставшиеся пропуски в tenure медианой с группировкой по стране
# (ведь в принципе могли быть возраста с одним человеком и пропуском в tenure)
df['tenure'] = df['tenure'].fillna(
df.groupby('geography')['tenure'].transform('median'))
print('Количество пропусков в tenure после заполнения:', df['tenure'].isna().sum())