Анализ поисковых запросов mobile vs desktop

Junior Python Соцсети

Условие задания

**Данные:** DataFrame `search_logs` с колонками: `query`, `platform` (mobile/desktop), `timestamp`, `user_id`.

**Задание:**
1. Найдите топ-10 поисковых запросов для каждой платформы
2. Постройте распределение запросов по часам суток для mobile и desktop
3. Определите, какие запросы уникальны для каждой платформы (есть в топ-10 одной, но не другой)

Пример данных

Структура для ориентира — реальные значения из эталонного решения.

import pandas as pd
import numpy as np

np.random.seed(42)
n = 20000

mobile_queries = ['купить iphone', 'погода', 'такси', 'доставка еды',
                  'курс доллара', 'рецепты', 'ближайшая аптека',
                  'расписание электричек', 'новости', 'акции магазинов',
                  'фитнес рядом', 'перевод слова']
desktop_queries = ['купить iphone', 'как написать резюме', 'excel формулы',
                   'python tutorial', 'курс доллара', 'новости',
                   'сравнение ноутбуков', 'отзывы на товар',
                   'бронирование отеля', 'страхование авто',
                   'онлайн курсы', 'акции магазинов']

rows = []
for _ in range(n):
    platform = np.random.choice(['mobile', 'desktop'], p=[0.6, 0.4])
    if platform == 'mobile':
        query = np.random.choice(mobile_queries)
        hour = np.random.choice(range(24),
               p=[0.01,0.005,0.005,0.005,0.005,0.01,0.03,0.06,
                  0.07,0.06,0.05,0.05,0.06,0.06,0.05,0.04,
                  0.04,0.05,0.06,0.07,0.07,0.06,0.04,0.02])
    else:
        query = np.random.choice(desktop_queries)
        hour = np.random.choice(range(24),
               p=[0.01,0.005,0.005,0.005,0.005,0.01,0.02,0.03,
                  0.05,0.08,0.09,0.09,0.07,0.06,0.08,0.08,
                  0.07,0.06,0.04,0.03,0.02,0.02,0.015,0.01])
    ts = pd.Timestamp('2024-03-01') + pd.Timedelta(hours=int(hour),
         minutes=np.random.randint(0, 60))
    rows.append({'query': query, 'platform': platform,
                 'timestamp': ts, 'user_id': np.random.randint(1, 5000)})

df = pd.DataFrame(rows)
df['timestamp'] = pd.to_datetime(df['timestamp'])
df['hour'] = df['timestamp'].dt.hour

# Топ-10 по платформам
top_mobile = (df[df['platform'] == 'mobile']['query']
              .value_counts().nlargest(10))
top_desktop = (df[df['platform'] == 'desktop']['query']
               .value_counts().nlargest(10))

print("=== Топ-10 Mobile ===")
for i, (q, cnt) in enumerate(top_mobile.items(), 1):
    print(f"  {i}. {q} ({cnt})")

print("\n=== Топ-10 Desktop ===")
for i, (q, cnt) in enumerate(top_desktop.items(), 1):
    print(f"  {i}. {q} ({cnt})")

# Уникальные запросы
only_mobile = set(top_mobile.index) - set(top_desktop.index)
only_desktop = set(top_desktop.index) - set(top_mobile.index)
print(f"\nТолько в mobile: {only_mobile}")
print(f"Только в desktop: {only_desktop}")

# Распределение по часам
hourly = df.groupby(['hour', 'platform']).size().unstack(fill_value=0)
hourly_pct = hourly.div(hourly.sum()) * 100

print("\n=== Распределение по часам (%) ===")
print(hourly_pct.round(1))

# Пиковые часы
mobile_peak = hourly_pct['mobile'].idxmax()
desktop_peak = hourly_pct['desktop'].idxmax()
print(f"\nПик mobile:  {mobile_peak}:00")
print(f"Пик desktop: {desktop_peak}:00")

Темы

pandas groupby value_counts визуализация поиск

Подсказки

Все тестовые задания →

Частые вопросы

Какой уровень знаний нужен для задачи "Анализ поисковых запросов mobile vs desktop"?

Это задание для уровня Junior. Подходит для начинающих аналитиков, проверяет базовые знания SQL/Python/статистики.

На каких собеседованиях встречается такая задача?

Подобные задания в категории «Python» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: pandas, groupby, value_counts, визуализация, поиск.

Сколько времени даётся на решение?

На реальном собеседовании на подобную задачу отводится 5-10 минут — проверяется скорость и базовая грамотность. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.

Где ещё потренироваться по теме «Python»?

На zasqlpython.ru есть 482 Python задачи с проверкой через Pyodide, конспекты Python и pandas, AI мок-собеседование с разбором ваших ответов.

← Все задания