pandasОчистка данныхEasyБесплатно~6 мин

NaN: разные стратегии для разных колонок

// Условие

Таблица df — данные о пользователях с искусственно введёнными пропусками.

Что нужно
Заполни NaN в трёх колонках разными стратегиями:
  • city — заполни строкой 'unknown';
  • age — заполни медианой по непустым значениям (округлить до int);
  • signup_date — ничего не трогай, оставь NaN как есть;
  • revenue — заполни средним по непустым значениям (округлить до 2 знаков).
Верни исходный DataFrame (с теми же колонками и порядком строк), но с заменёнными NaN.

// Данные

df: user_id (без NaN), city (~10% NaN), age (~8% NaN), signup_date (~3% NaN), revenue (~12% NaN)
▶ Решить в pandas-тренажёре

// Решение

Подсказка

Для категориальной колонки: df['city'].fillna('unknown').

Медиана по непустым: df['age'].median() — skipna=True по умолчанию. После fillna приведи к int: .astype(int).

Среднее: df['revenue'].mean(). Округли: round(..., 2) и передай в fillna. signup_date не трогай — просто не пиши для неё строку fillna.

Сначала попробуй сам → Показать решение
df = load_data()

result = df.copy()
result['city']    = result['city'].fillna('unknown')
result['age']     = result['age'].fillna(df['age'].median()).astype(int)
result['revenue'] = result['revenue'].fillna(round(df['revenue'].mean(), 2))
# signup_date — не трогаем

print(result.head())
print(f"NaN после:\n{result.isna().sum()}")
Разные колонки — разные стратегии. Для категории — fillna('unknown') (или модальное значение). Для числовой — медиана устойчивее к выбросам; среднее — когда распределение нормальное. Для дат — обычно оставляют NaN (или дропают строки, если дата критична для анализа). Не делай df.fillna(0) глобально — это типичная ошибка джуна.

// Похожие задачи