Вопросы по Python на собеседовании аналитика

Проверь себя · 1/3разбор после ответа
Что вернёт выражение "b" in ["a", "b", "c"]?

Что спрашивают по Python

Python на собеседовании аналитика проверяют не так, как у разработчика. Никто не ждёт, что вы развернёте бинарное дерево или оптимизируете алгоритм до логарифма за пять минут. Задача интервьюера другая — понять, сможете ли вы взять сырой датасет, почистить его, посчитать нужные метрики и не сломаться на пропусках и дубликатах. Поэтому центр тяжести почти всегда смещён в сторону pandas и работы с табличными данными, а не в сторону классического программирования.

Хорошая новость в том, что, как и в SQL, набор тем здесь конечен и предсказуем. Если довести до автоматизма десяток ключевых операций pandas, разобраться со встроенными структурами данных и понять, чем векторизация отличается от цикла, Python-секция перестаёт быть лотереей и готовится за пару недель прицельной практики.

Пайплайн обработки данных в pandas

Вопросы делятся по уровням, и интервьюер обычно поднимает планку постепенно, пока не нащупает границу ваших знаний.

Junior. Базовый pandas и понимание встроенных типов. Здесь проверяют не скорость, а отсутствие дыр в фундаменте: умеете ли вы прочитать файл, отфильтровать строки и сгруппировать данные.

  • Чтение данных: read_csv, read_excel, основные параметры
  • Фильтрация и булева индексация: df[df.col > 5]
  • groupby и агрегатные функции
  • Работа с пропусками: fillna, dropna, isna
  • Встроенные типы: list, dict, set, tuple — когда какой

Middle. Многошаговая обработка и понимание того, что именно возвращает каждый вызов. Это уровень, на котором отсеивается большинство кандидатов «с курсов».

  • merge и join: типы соединений, поведение по умолчанию
  • pivot_table, melt, reshape данных
  • apply, map, lambda и когда они оправданы
  • list и dict comprehension
  • Разница loc и iloc, copy и view

Senior. Производительность, память и архитектура пайплайна. Здесь важнее объяснить trade-off, чем вспомнить синтаксис конкретного метода.

  • Векторизация и broadcasting в numpy
  • Сложность операций: поиск в list против set
  • Категориальные типы и оптимизация памяти
  • Обработка данных, не помещающихся в память (чанки)
  • Временные ряды: resample, rolling

Как проходит Python-секция

Формат зависит от компании, но сводится к нескольким сценариям, и к каждому стоит готовиться по-разному.

Live-coding по шарингу экрана. Частый вариант для middle и выше: вам дают небольшой DataFrame и просят посчитать метрику вслух — например, конверсию по сегментам. Оценивают не только итоговый код, но и ход мысли: проговаривайте, почему берёте groupby, а не цикл, и что произойдёт с пропусками при агрегации.

Тестовое или домашняя задача. Один-два датасета и список вопросов на дом или в Jupyter-ноутбуке. Здесь ценят аккуратность: корректные джойны, осознанную работу с пропусками, читаемый код без двадцати промежуточных переменных. Часто просят ещё и коротко прокомментировать выводы.

Устный разбор без кода. Интервьюер спрашивает «чем отличается loc от iloc» или «что вернёт merge без указания ключа». Проверяют понимание механики, а не память, поэтому нужно понимать, как метод ведёт себя на краях: с пустым DataFrame, с дубликатами ключей, с разными типами данных.

В любом из форматов выигрывает не тот, кто знает экзотические методы, а тот, кто уверенно владеет базовым набором и не делает тихих ошибок в обработке данных.

Почему проваливают Python-часть

Аналитики часто пишут код «на автопилоте»: знают, что df.groupby().agg() работает, но не могут объяснить, что именно вернёт конкретный вызов. На собеседовании спрашивают как раз понимание, а не способность загуглить метод. Поэтому самые болезненные провалы случаются не на сложных темах, а на базовых нюансах, которые кажутся очевидными до первого уточняющего вопроса.

Типичные ловушки повторяются из собеседования в собеседование: путаница size() и count() в groupby, подмена loc и iloc, merge с inner join по умолчанию, который молча теряет строки, и привычка тянуть построчный apply там, где нужна векторизация. Каждый из этих нюансов кажется мелочью, пока не всплывает в живом коде на глазах у интервьюера.

Примеры вопросов с разбором

Попробуйте ответить без подсказок, прежде чем читать разбор.

  1. Чем отличается groupby().size() от groupby().count()? size() возвращает число строк в каждой группе целиком, включая строки с пропусками. count() считает количество непустых значений по каждой колонке отдельно, поэтому на данных с NULL результаты расходятся.

  2. В чём разница между loc и iloc? loc обращается к строкам и колонкам по меткам индекса, iloc — по числовым позициям. Путаница опасна, когда индекс не совпадает с порядковым номером строки.

  3. Что вернёт df.merge(df2) без параметров? Inner join по всем одноимённым колонкам. Строки без совпадений отбрасываются, а если общих колонок нет — будет ошибка. Поэтому ключ и тип join лучше задавать явно: df.merge(df2, on='id', how='left').

  4. Чем list отличается от tuple, и когда нужны set и dict? list изменяемый, tuple — нет, поэтому tuple можно использовать как ключ словаря. set хранит уникальные значения и даёт быструю проверку вхождения, dict — пары ключ-значение с доступом по ключу.

  5. Что такое list comprehension и чем от него отличается dict comprehension? Это компактный способ собрать коллекцию в одну строку. List comprehension строит список, dict comprehension — словарь с парами ключ-значение:

    squares_list = [x**2 for x in range(5)]          # [0, 1, 4, 9, 16]
    squares_dict = {x: x**2 for x in range(5)}        # {0: 0, 1: 1, 2: 4, ...}
  6. Когда apply() медленнее векторизации и почему? apply() применяет функцию построчно через Python-цикл, а векторные операции pandas и numpy выполняются на уровне C сразу над всем массивом. На больших DataFrame разница в скорости — порядки величин, поэтому векторизацию выбирают всегда, когда возможно.

  7. Какая сложность поиска элемента в list по сравнению с set? В list поиск линейный — O(n), приходится перебирать элементы. В set и dict поиск в среднем за O(1) благодаря хешированию, поэтому для частых проверок вхождения set предпочтительнее списка.

  8. Что выведет [x for x in range(6) if x % 2 == 0]? Список чётных чисел [0, 2, 4]. Условие после for фильтрует элементы, оставляя только те, что делятся на два без остатка.

  9. Чем fillna() отличается от dropna(), и когда что выбирать? dropna() удаляет строки или колонки с пропусками, fillna() заполняет их значением — нулём, средним, медианой или соседним наблюдением. Удаление подходит, когда пропусков мало; заполнение — когда терять строки нельзя.

Подробные разборы по подтемам

Как готовиться к Python-части

  1. Сделайте pandas центром подготовки. На него приходится основная масса вопросов по Python для аналитика: groupby, merge, фильтрация, работа с пропусками, pivot_table. Если уверенно владеете этим набором, большую часть секции вы уже закрыли.

  2. Опирайтесь на аналогии с SQL. Если вы уже знаете SQL, pandas ложится легче: groupby соответствует GROUP BY, merge — JOIN, query() и булева индексация — WHERE. Перенос знакомых концепций помогает не зубрить, а понимать, что делает каждый метод.

  3. Практикуйтесь на коротких вопросах, а не на пайплайнах. На собеседовании проверяют понимание того, что возвращает конкретный вызов, а не способность написать ETL на сто строк. Решайте много мелких задач с быстрым разбором — так паттерны закрепляются надёжнее всего. Удобно гонять их в тренажёре Python от Карьерника: короткие вопросы с моментальным объяснением.

  4. Разбирайте подводные камни. Разница size и count, loc и iloc, copy и view, inner join по умолчанию в merge — любимые вопросы интервьюеров. Один раз разберите каждый нюанс, и больше он вас не подловит.

Частые ошибки на собеседовании

Главная ошибка — писать код молча. Интервьюер хочет услышать рассуждение: проговорите типы колонок, уточните, есть ли пропуски, объясните, почему берёте merge с конкретным how. Вторая частая ошибка — тянуть apply и циклы туда, где работает векторная операция. Третья — игнорировать края: пустой DataFrame, дубликаты ключей при джойне, NaN, который ломает агрегацию или сравнение. Кандидат, который сам вслух проверяет эти случаи, выглядит сильнее того, кто получил «правильный» результат, но не подумал про грязные данные.

Другие темы

FAQ

Какие вопросы по Python задают на собеседовании аналитика?

Чаще всего — pandas: groupby, merge, фильтрация, работа с пропусками, pivot_table. Добавляются встроенные структуры данных, list и dict comprehension, разница векторизации и apply. На senior-уровне спрашивают про производительность, память и сложность операций.

Нужен ли Python для аналитика данных?

В большинстве компаний — да. Даже если основной инструмент BI вроде Tableau или Metabase, Python нужен для автоматизации и обработки данных, которые не ложатся в SQL. Для junior иногда достаточно SQL, но Python заметно расширяет круг доступных вакансий.

Какой уровень Python нужен для junior-аналитика?

Базовый pandas: прочитать CSV, отфильтровать строки, сгруппировать, заполнить пропуски, построить простой график. Знать встроенные типы данных и понимать булеву индексацию. ООП, декораторы и async учить не обязательно — это инструменты разработчиков, а не аналитиков.

Спрашивают ли алгоритмы на собеседовании аналитика?

Редко и в облегчённом виде. Развёрнутые алгоритмические задачи — это для software engineer. У аналитика скорее уточнят базовую сложность операций, например поиск в list против set. Сортировки массивов вручную писать почти не просят.

pandas или SQL — что важнее учить аналитику?

Оба нужны, но порядок зависит от старта. SQL почти всегда обязателен и проверяется первым, поэтому с него стоит начать. pandas во многом повторяет логику SQL и после уверенного SQL осваивается быстрее.

Сколько вопросов по Python в Карьернике?

200+ вопросов, разбитых по подтемам: pandas, numpy, встроенные структуры, comprehension, обработка данных, визуализация. Каждый — с подробным разбором сразу после ответа, поэтому ошибка превращается в выученный паттерн.