---
title: Pandas
questionDates:
  q-transfer-0071: '2026-10-01'
  q-transfer-0072: '2026-10-01'
  q-transfer-0073: '2026-10-01'
  q-transfer-0074: '2026-10-01'
seo:
  description: >-
    Тема «Pandas» для собеседования Data Analyst. Как работает DataFrame.apply и
    когда его не стоит использовать? Когда использовать pandas.concat, а когда
    merge?
  title: Pandas — Data Analyst
---

[Все темы Data Analyst](/prep/data-analyst)

## Как работает DataFrame.apply и когда его не стоит использовать? [#q-transfer-0071]

`DataFrame.apply` вызывает функцию для каждой колонки при `axis=0` или для каждой строки при `axis=1`; форма результата зависит от возвращаемого значения и параметров. Он удобен для логики, которую трудно выразить иначе, но row-wise Python-функция часто медленна. Сначала ищут векторную операцию, метод строк или дат, `where`, `map`, join либо groupby. `apply` не гарантирует магического ускорения и может скрыть проблемы типов. Производительность проверяют на реальном объеме.

:::note[Ссылки для изучения]

1. [Pandas: раздел «Применение функций к ячейкам, столбцам и строкам»](https://habr.com/ru/companies/ods/articles/322626/)
1. [Ускорение Pandas на реальном проекте: раздел «Применяем функции»](https://habr.com/ru/companies/tochka/articles/899730/)
   :::

---

## Когда использовать pandas.concat, а когда merge? [#q-transfer-0072]

`concat` соединяет готовые объекты вдоль оси. По `axis=0` складывает строки и выравнивает колонки, по `axis=1` ставит колонки рядом и выравнивает индекс. При вертикальном объединении часто нужен `ignore_index=True`. `merge` выполняет реляционное соединение по ключам с `inner`, `left`, `right` или `outer` и может размножить строки при many-to-many. Поэтому concat выбирают для однородных частей, merge для сопоставления сущностей, предварительно проверив ключи и ожидаемую кардинальность.

:::note[Ссылки для изучения]

1. [Pandas: вертикальное объединение concat и соединение по ключу merge](https://habr.com/ru/articles/475210/)
2. [Объединение DataFrame: concat и merge. Alexander Ershov, с 16:20](https://www.youtube.com/watch?v=-sJxwvx0P20&t=980s)

:::

---

## Когда в pandas использовать dtype category? [#q-transfer-0073]

`category` полезен для повторяющихся значений с относительно низкой кардинальностью: Pandas хранит коды и отдельный набор категорий, что часто экономит память и ускоряет groupby или сортировку. Можно зафиксировать допустимые категории и их порядок. Неизвестное значение после приведения к заданному dtype станет `NaN`, это надо контролировать. Для почти уникальных строк экономии может не быть, а операции добавления новых значений сложнее. `category` описывает внутреннее представление, а не автоматически смысл порядковой шкалы.

:::note[Ссылки для изучения]

1. [Работа с объемными данными: раздел «Используем тип category для текстов»](https://habr.com/ru/articles/1002874/)
   :::

---

## Как поэлементно преобразовать значения DataFrame? [#q-transfer-0074]

Для поэлементного преобразования всего DataFrame в современных версиях Pandas используют `DataFrame.map`; прежнее имя `applymap` устарело. `Series.map` преобразует одну Series функцией, словарем или другой Series. `apply` работает по строкам или столбцам, а не просто по каждому скаляру. Перед Python-функцией стоит поискать векторную операцию, она обычно быстрее и яснее. Обработку `NaN` задают явно, например через `na_action='ignore'`, если вызываемая функция не должна получать пропуски.

:::note[Ссылки для изучения]

1. [Pandas: DataFrame.map для обработки каждого элемента](https://docs-python.ru/packages/modul-pandas-analiz-dannykh-python/dataframe-apply-series-apply/)
   :::
