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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python8 728
  • Облачные технологии6 606
  • QA вакансии2 165
  • Android1 317
  • Инженер данных878
  • Продакт-менеджер314

Разработка

  • iOS1 229
  • Backend вакансии1 210
  • AI вакансии545
  • Fullstack вакансии500
  • Frontend вакансии422
  • Mobile вакансии28

По стеку

  • Go5 192
  • Java3 112
  • Kotlin1 085
  • Node.js992
  • Rust846
  • .NET660
  • PHP319
  • C++266
  • C#208

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

  • Kubernetes3 904
  • Linux-инфраструктура2 843
  • DevOps вакансии2 684
  • Terraform / IaC2 162
  • Мониторинг и Observability1 062
  • CI/CD921
  • SRE303
  • Кибербезопасность31

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

  • Аналитик данных537
  • Data Scientist445
  • Бизнес-аналитик402
  • Системный аналитик68

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

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

По регионам

  • Вакансии в США26 186
  • Вакансии в Европе10 369
  • Работа в России3 628
  • Вакансии в Канаде2 306

По формату

  • Удалённые вакансии43 484
  • Релокация в США26 186
  • Гибридная работа5 597
  • Офисная работа4 383

По уровню

  • Senior вакансии22 724
  • Middle вакансии11 726
  • Junior вакансии3 874

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

Все компании
  • Rakuten189 вакансий
  • Wise186 вакансий
  • ASML164 вакансии
  • Grab135 вакансий
  • Celonis45 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen26 вакансий
  • Monzo19 вакансий
  • Darktrace16 вакансий

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

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

Каковы улучшения производительности в Pandas 2.0 (Arrow-backed dtypes, Copy-on-Write)?

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

Pandas 2.0 добавил Arrow-backed dtypes (меньше памяти, nullable int без float, zero-copy I/O) и Copy-on-Write (CoW), устраняющий SettingWithCopyWarning и делающий поведение срезов детерминированным.

Arrow-backed dtypes в Pandas 2.0

Pandas 2.0 ввёл нативную поддержку Apache Arrow как backend для хранения данных. Столбцы можно создать с Arrow-типом, передав суффикс [pyarrow] в параметр dtype или используя dtype_backend="pyarrow" при чтении файлов.

import pandas as pd
import pyarrow as pa

# Создание DataFrame с Arrow-backed типами
df = pd.DataFrame(
    {"id": [1, 2, 3], "name": ["Alice", "Bob", None], "score": [9.5, 8.0, 7.2]},
    dtype="ArrowDtype"
)

# Явное указание Arrow-типов
df2 = pd.DataFrame({
    "id": pd.array([1, 2, 3], dtype="int32[pyarrow]"),
    "name": pd.array(["Alice", "Bob", None], dtype="string[pyarrow]"),
})

# При чтении Parquet/CSV с backend=pyarrow
df3 = pd.read_parquet("data.parquet", dtype_backend="pyarrow")
df4 = pd.read_csv("data.csv", dtype_backend="pyarrow")

print(df2.dtypes)
# id      int32[pyarrow]
# name    string[pyarrow]

Что даёт Arrow backend

  • Nullable integer/boolean без конвертации в float: int64[pyarrow] хранит NA нативно, а не как NaN в float64.
  • Меньший расход памяти: Arrow использует буферы с битовыми масками для null-значений вместо sentinel-значений NumPy.
  • Ускорение I/O: чтение Parquet через dtype_backend="pyarrow" даёт zero-copy, когда данные уже в Arrow-формате.
  • Поддержка вложенных типов: list[pyarrow], struct[pyarrow], map[pyarrow] — типы, которые NumPy не поддерживает.

Copy-on-Write (CoW)

До Pandas 2.0 изменение среза DataFrame иногда модифицировало оригинал, иногда нет — поведение зависело от того, возвращает ли операция view или копию. Pandas 2.0 вводит Copy-on-Write: любой объект (DataFrame или Series), полученный из другого, считается независимым — данные копируются только в момент первой записи.

import pandas as pd

# Включение CoW (обязательно в pandas 2.x, default в pandas 3.0)
pd.options.mode.copy_on_write = True

df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
slice_df = df[["a"]]   # view, данные не копируются

slice_df["a"] = 99     # здесь происходит копирование (write)
print(df["a"].tolist())   # [1, 2, 3] — оригинал не тронут
print(slice_df["a"].tolist())  # [99, 99, 99]

Практические выгоды CoW

  • Устранение SettingWithCopyWarning — самого частого источника путаницы.
  • Снижение ненужных копий: Pandas 2.0 откладывает копирование до реального изменения, что уменьшает пиковое потребление памяти в цепочках трансформаций.
  • Детерминированное поведение: код работает предсказуемо вне зависимости от того, view или copy возвращает конкретная операция.

Миграция на CoW

# Включить предупреждения о будущих изменениях
pd.options.mode.copy_on_write = "warn"  # pandas 2.x

# Найти устаревшие паттерны: chained assignment
df[df["a"] > 1]["b"] = 0  # будет предупреждение

# Правильный вариант
df.loc[df["a"] > 1, "b"] = 0

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

  • CoW не включён по умолчанию в Pandas 2.x — нужно явно установить pd.options.mode.copy_on_write = True; в Pandas 3.0 это станет дефолтом.
  • Arrow backend требует установки pyarrow: pip install pyarrow, он не входит в базовую зависимость Pandas.
  • Не все операции поддерживают Arrow-типы: некоторые NumPy-зависимые функции (например, np.where напрямую) могут вернуть NumPy-массив, что приведёт к потере Arrow-типа.
  • Смешение NumPy и Arrow столбцов в одном DataFrame — законно, но может замедлить операции из-за implicit конвертаций.
  • Chained assignment всё ещё опасен без CoW: df[mask]["col"] = val молча ничего не делает при CoW — правильно использовать df.loc[mask, "col"] = val.
  • Производительность Arrow неоднородна: Arrow быстрее для string/nested типов и I/O, но для тяжёлых числовых операций NumPy backend может оказаться быстрее из-за оптимизаций BLAS/LAPACK.
  • Nullable pd.NA vs float NaN: Arrow-столбцы возвращают pd.NA, а не np.nan, что ломает код, проверяющий x != x или math.isnan(x).
  • Сериализация в pickle: Arrow-backed DataFrame сериализуется иначе — не совместим с pickle-файлами, записанными в Pandas 1.x.

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

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

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

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

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

  • Может ли связать pandas 2 performance с реальным контрактом входов и выходов.
  • Упоминает ли тесты, метрики, reproducibility и диагностику ошибок.
  • Видит ли различие между demo-кодом в ноутбуке и production-пайплайном.
  • Предлагает ли observability, rollback, ограничения стоимости и стратегию incident replay.

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

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

Источники

  • https://pandas.pydata.org/docs/user_guide/copy_on_write.html
  • https://pandas.pydata.org/docs/user_guide/pyarrow.html

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

Pandasdata-aiobservabilitypandasproduction-ml

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

  • Стажёр по разработке ML-моделей
  • ML / DS Engineer (Classic ML)
  • Data Analyst / Data Engineer (LLM/AI)
  • Аналитик данных
  • Data Scientist III