DataFrame — основная структура данных в pandas и главный инструмент аналитика для работы с табличными данными в Python. На собеседовании проверяют фильтрацию, группировку, merge, работу с пропусками и типами данных. Часто дают датасет и просят посчитать метрику прямо в коде.
Всего в этом разделе 20 вопросов. Каждый — с правильным ответом и кратким разбором теории. Разбито на 4 части по 5 вопросов.
Выражение `df["price"] > 100` формирует булеву `Series` той же длины, что и `DataFrame`. Когда вы пишете `df[маска]`, pandas оставляет только те строки, где маска равна True. В результате возвращается `DataFrame` со всеми исходными столбцами (а индекс строк обычно сохраняется исходный, если явно не вызвать `reset_index()`).
В pandas `df["col"]` и `df.loc[:, "col"]` обычно возвращают `Series`, потому что выбирается один столбец как одномерный объект. А `df[["col"]]` передает список столбцов, поэтому результат — всегда `DataFrame` (двумерная таблица), что удобно для дальнейших `.merge()` или сохранения формы данных.
В `how="left"` левая таблица — это `orders`, поэтому каждая строка заказа попадёт в результат. Для каждого заказа pandas пытается найти строку в `customers` с тем же `customer_id`. Если совпадения нет, колонки из `customers` заполняются `NaN`. Это типичный паттерн для обогащения фактов (заказов) атрибутами (клиентов).
Метод `df["status"].isin([...])` возвращает булеву `Series`: True для тех строк, где статус входит в указанный набор. Оператор `~` инвертирует маску (True становится False и наоборот). Поэтому выражение `df[~...]` оставляет строки, где статус не равен ни `cancelled`, ни `returned`.
Выражение `df["col"] > 0` сравнивает значения одного столбца и возвращает булеву `Series` (один элемент на строку). Когда эту `Series` используют как индексатор `df[mask]`, pandas выбирает строки, где маска True. Так обычно строится фильтрация данных в `DataFrame` без циклов.
В приложении — таймер, прогресс, стрики и 1700+ вопросов по всем темам.
Тренировать в Telegram