pandasОсновыEasyБесплатно~5 мин

Доли по каналам привлечения

// Условие

Таблица df — пользователи платформы с каналом привлечения.

Что нужно
Посчитай долю пользователей по каждому каналу. Верни DataFrame с колонками acquisition_channel и share (float от 0 до 1, например 0.347). Сортировка по share по убыванию.

В результате 5 строк. Сумма долей должна равняться 1.0 (±0.001).

// Данные

df: user_id, signup_date, acquisition_channel, country
▶ Решить в pandas-тренажёре

// Решение

Подсказка

value_counts(normalize=True) сразу даёт доли от 0 до 1 — не нужно делить на len(df) вручную.

После value_counts(normalize=True).reset_index() вторая колонка в pandas ≥ 2.0 называется proportion. Переименуй её в share.

Альтернатива без rename: df.groupby('acquisition_channel').size().div(len(df)).reset_index(name='share').sort_values('share', ascending=False).

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

# Доли по каналу: groupby + size + div(n)
result = (df.groupby('acquisition_channel')
          .size()
          .div(len(df))
          .reset_index(name='share')
          .sort_values('share', ascending=False)
          .reset_index(drop=True))

print(result)

value_counts(normalize=True) — самый короткий путь, но в pandas ≥ 2.0 reset_index() называет вторую колонку proportion, не share — не забудь переименовать. Альтернатива через groupby+size+div явнее: сразу понятно откуда берутся числа. На собесе стоит проверить, что сумма долей равна 1 — простой sanity-check перед тем как показывать результат.

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

// Разобраться в теме

→ pandas для аналитика