Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 196новых вакансий за сутки·91 460вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 137
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 401 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 146
  • Облачные технологии14 070
  • QA вакансии3 446
  • Backend вакансии2 089
  • Инженер данных1 792
  • Продакт-менеджер1 233

Разработка

  • Android1 863
  • iOS1 701
  • Fullstack вакансии976
  • AI вакансии944
  • Frontend вакансии738
  • Mobile вакансии44

По стеку

  • Go8 699
  • Java6 545
  • Node.js2 025
  • .NET1 723
  • Kotlin1 613
  • Rust1 462
  • C#710
  • PHP684
  • C++574

DevOps и инфраструктура

  • Kubernetes7 765
  • DevOps вакансии6 051
  • Linux-инфраструктура5 492
  • Terraform / IaC4 271
  • CI/CD3 242
  • Мониторинг и Observability1 790
  • SRE565
  • Кибербезопасность451

Аналитика и данные

  • Data Scientist1 124
  • Бизнес-аналитик916
  • Аналитик данных839
  • Системный аналитик151

Другие направления

  • Проджект-менеджер606
  • UI/UX дизайн142
  • Ручное тестирование14

По регионам

  • Вакансии в США43 473
  • Вакансии в Европе23 552
  • Вакансии в Канаде4 376
  • Работа в России3 902

По формату

  • Удалённые вакансии72 758
  • Релокация в США43 100
  • Гибридная работа12 402
  • Офисная работа7 096

По уровню

  • Senior вакансии42 000
  • Middle вакансии20 393
  • Junior вакансии6 602

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме PandasВсе вопросы
PandasMiddleКодинг

В чём разница между apply(), map() и applymap() (в Pandas 2.x переименован в map())?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Series.map — поэлементно на одном столбце (словарь или func). DataFrame.apply(axis=1) — func получает строку-Series. DataFrame.map (ex-applymap) — func на каждую ячейку. apply(axis=1) самый медленный — предпочитайте векторизацию.

Когда что использовать

Series.map — замена значений через словарь или простая поэлементная функция на одном столбце. Быстрее apply, потому что не создаёт промежуточные объекты Series:

import pandas as pd

df = pd.DataFrame({
    "city": ["Moscow", "Berlin", "NYC", "Berlin"],
    "salary": [120_000, 95_000, 180_000, 88_000],
})

# map со словарём — O(1) lookup вместо Python-цикла
country_map = {"Moscow": "RU", "Berlin": "DE", "NYC": "US"}
df["country"] = df["city"].map(country_map)   # NaN для неизвестных ключей
print(df)

DataFrame.apply с axis=1 — когда нужно комбинировать несколько колонок в одной строке:

# Нормализация зарплаты по медиане города
def normalize(row):
    return row["salary"] / df.groupby("city")["salary"].transform("median")[row.name]

# Лучше через vectorized операции, но apply читаем для прототипа:
df["salary_norm"] = df.apply(
    lambda row: row["salary"] / df.loc[df["city"] == row["city"], "salary"].median(),
    axis=1,
)
print(df.head())

DataFrame.map (ex-applymap) — когда нужно применить одну функцию к каждой ячейке всего DataFrame, например форматирование или логирование:

numeric = df[["salary", "salary_norm"]]
# Округлить все числа до 2 знаков
rounded = numeric.map(lambda x: round(x, 2) if pd.notna(x) else x)
print(rounded)

Три метода — три контракта

В Pandas 2.x существуют три похожих метода, которые часто путают:

  • Series.map(func_or_dict) — поэлементное преобразование одной Series; принимает функцию, словарь или другую Series.
  • DataFrame.apply(func, axis=0|1) — применяет функцию к каждой колонке (axis=0) или к каждой строке (axis=1); func получает Series.
  • DataFrame.map(func) — поэлементное преобразование каждой ячейки DataFrame; в Pandas <2.1 назывался applymap().

Сравнение производительности

Правило: чем меньше Python-объектов создаётся на каждую ячейку, тем быстрее.

  • Vectorized NumPy / встроенные методы Pandas — самые быстрые.
  • Series.map(dict) — быстро, hash lookup.
  • Series.map(func) / DataFrame.map(func) — медленнее: Python-вызов на каждый элемент.
  • DataFrame.apply(axis=1) — самый медленный: создаёт Series для каждой строки.
import numpy as np
import time

big = pd.DataFrame({"val": np.random.randn(1_000_000)})

t0 = time.perf_counter()
big["v2"] = big["val"].map(lambda x: x ** 2)       # map на Series
print(f"map: {time.perf_counter() - t0:.3f}s")

t0 = time.perf_counter()
big["v3"] = big["val"] ** 2                         # vectorized
print(f"vectorized: {time.perf_counter() - t0:.3f}s")

Переименование в Pandas 2.1

DataFrame.applymap() объявлен устаревшим в Pandas 2.1 и заменён на DataFrame.map(). Старый код с applymap выбросит FutureWarning. Переход тривиален — имя метода меняется, сигнатура идентична.

Подводные камни

  • axis=0 по умолчанию в apply — df.apply(func) применяет func к колонкам, не к строкам. Начинающие ожидают поэлементного поведения и получают неожиданный результат.
  • NaN при map со словарём — если ключ отсутствует в словаре, Series.map(dict) возвращает NaN, а не KeyError. Легко пропустить молчаливую потерю данных.
  • applymap не существует в Pandas ≥2.1 — код из Stack Overflow образца 2022 года упадёт с AttributeError или FutureWarning.
  • apply(axis=1) на больших DataFrame — O(n) создание объектов Series; на миллионе строк в 10–50 раз медленнее vectorized эквивалента.
  • Возврат разных типов из apply — если func возвращает скаляр для одних строк и список для других, Pandas может вернуть Series of lists вместо развёрнутого DataFrame.
  • inplace в apply — apply всегда возвращает новый объект; попытка мутировать исходный DataFrame внутри func с CoW (Pandas 2.0+) не даст эффекта.
  • map на DataFrame vs Series — df["col"].map() и df.map() — разные методы разных классов; передача DataFrame туда, где ожидается Series, вызовет TypeError.
  • result_type в apply — параметр result_type="expand" нужен, чтобы func, возвращающая tuple/list, разворачивалась в несколько колонок; без него получится Series of lists.

Типичные ошибки

  • Объяснять apply map applymap только синтаксисом без shape, dtype, состояния или режима выполнения.
  • Игнорировать leakage, воспроизводимость, пустые входы и скрытые копии данных.
  • Не проверять production-симптомы: latency, память, ретраи, дрейф качества и несовпадение версий.

Что проверяет интервьюер

  • Может ли связать apply map applymap с реальным контрактом входов и выходов.
  • Упоминает ли тесты, метрики, reproducibility и диагностику ошибок.
  • Видит ли различие между demo-кодом в ноутбуке и production-пайплайном.

Как вы знаете этот вопрос?

Проверить себя по теме Pandas →

Источники

  • https://pandas.pydata.org/docs/user_guide/basics.html#function-application
←Предыдущий вопросКакие ключевые абстракции Pandas нужно понимать, чтобы не получать формально рабочие, но неверные результаты?Следующий вопрос→Как обрабатывать дублированные строки в DataFrame — `duplicated()` и `drop_duplicates()`?

Связанные темы

Pandasdata-aidata-processingpandasperformance-debugging

Вакансии с этим навыком

  • Middle/Senior Data Analyst
  • ML-инженер
  • Senior Data Scientist
  • Data Engineer
  • Middle+ Data Scientist — GenAI & Agentic AI

Частые вопросы на собеседовании

  • Каковы типичные причины SettingWithCopyWarning и как его исправить?
  • В чём разница между merge(), join() и concat() в Pandas?
  • Как обрабатывать пропущенные значения в Pandas — isnull(), dropna(), fillna()?
  • В чём разница между .loc[] и .iloc[] для индексирования?