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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 105
  • Облачные технологии14 068
  • QA вакансии3 460
  • Backend вакансии2 098
  • Инженер данных1 796
  • Продакт-менеджер1 248

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии979
  • AI вакансии951
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 651
  • Java6 544
  • Node.js2 018
  • .NET1 719
  • Kotlin1 623
  • Rust1 453
  • C#709
  • PHP683
  • C++571

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

  • Kubernetes7 761
  • DevOps вакансии6 057
  • Linux-инфраструктура5 492
  • Terraform / IaC4 259
  • CI/CD3 240
  • Мониторинг и Observability1 782
  • SRE565
  • Кибербезопасность450

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

  • Data Scientist1 127
  • Бизнес-аналитик925
  • Аналитик данных845
  • Системный аналитик154

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

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

По регионам

  • Вакансии в США43 686
  • Вакансии в Европе23 668
  • Вакансии в Канаде4 413
  • Работа в России3 909

По формату

  • Удалённые вакансии73 889
  • Релокация в США43 686
  • Гибридная работа12 392
  • Офисная работа7 088

По уровню

  • Senior вакансии42 236
  • Middle вакансии20 545
  • Junior вакансии6 653

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

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

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

Как использовать query() для фильтрации DataFrame и когда он читабельнее булевой индексации?

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

query() принимает строку-условие с именами столбцов напрямую, что читабельнее при многих условиях; поддерживает внешние переменные через @, а при наличии numexpr работает быстрее булевой индексации на больших данных.

DataFrame.query() — синтаксис

query() принимает строку с условием на языке, похожем на Python-выражения, и возвращает отфильтрованный DataFrame. Внутри строки можно использовать имена столбцов напрямую без df["col"].

import pandas as pd
import numpy as np

df = pd.DataFrame({
    "name": ["Alice", "Bob", "Carol", "Dave", "Eve"],
    "age": [25, 32, 28, 45, 22],
    "salary": [60000, 85000, 72000, 120000, 55000],
    "department": ["Eng", "Sales", "Eng", "Mgmt", "Sales"],
    "active": [True, True, False, True, False],
})

# Простое условие
result = df.query("age > 25 and salary >= 70000")

# Эквивалент булевой индексации:
result2 = df[(df["age"] > 25) & (df["salary"] >= 70000)]

# Оператор in
result3 = df.query("department in ['Eng', 'Mgmt']")

# not in
result4 = df.query("department not in ['Sales']")

# Внешняя переменная через @
min_salary = 70000
depts = ["Eng", "Sales"]
result5 = df.query("salary > @min_salary and department in @depts")

# Сравнение со строкой
result6 = df.query("name == 'Alice' or name == 'Bob'")

# Числовые выражения
result7 = df.query("salary / age > 2500")

# Работа с индексом
df_indexed = df.set_index("name")
result8 = df_indexed.query("index in ['Alice', 'Carol']")

# Метод str и регулярные выражения — через булевую индексацию
# (query не поддерживает .str напрямую):
result9 = df[df["name"].str.startswith("A")]

Когда query() читабельнее булевой индексации

  • Много условий: query("a > 1 and b < 5 and c == 'X'") vs. df[(df["a"]>1) & (df["b"]<5) & (df["c"]=="X")] — строка короче и понятнее.
  • Имена столбцов без повторения df: не нужно писать df["col"] в каждом условии.
  • Динамически построенные запросы: строку легко собрать из частей, что удобно при параметризованной фильтрации.
  • Читаемость в Jupyter-ноутбуках: цепочки df.query(...).groupby(...).agg(...) выглядят опрятно.

Производительность: numexpr

query() автоматически использует библиотеку numexpr, если она установлена и DataFrame достаточно большой (>10 000 строк). Numexpr компилирует выражение в байткод и вычисляет его поэлементно, используя все ядра CPU и меньше памяти (нет промежуточных массивов).

# pip install numexpr
import numexpr

# query автоматически переключится на numexpr при большом df
large_df = pd.DataFrame(np.random.randn(1_000_000, 5), columns=list("abcde"))

# Это быстрее обычной булевой индексации для больших данных:
result = large_df.query("a > 0.5 and b < -0.3")

# Принудительно отключить numexpr:
result2 = large_df.query("a > 0.5", engine="python")

Ограничения query()

  • Имена столбцов с пробелами или спецсимволами нужно оборачивать в обратные кавычки: df.query("`first name` == 'Alice'").
  • Не поддерживает методы строк (.str.contains), datetime-методы (.dt.year) — для этого нужна булевая индексация или eval().
  • Нельзя использовать pd.NA или np.nan напрямую в строке — проверяйте null через .isna() отдельно.

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

  • Имена столбцов с пробелами: без обратных кавычек запрос бросит SyntaxError или неочевидный UndefinedVariableError.
  • Конфликт имён столбцов с Python keywords: столбец not, and, in, True создаёт проблемы — переименуйте перед query.
  • Переменные окружения (@) работают только в локальной области видимости: если вызвать query внутри функции с переменной из внешней области — @var не найдёт её.
  • numexpr не поддерживает все операции: при использовании нестандартного синтаксиса Pandas тихо откатывается на Python engine без предупреждения.
  • query() не работает с MultiIndex столбцами: при MultiIndex нужна обычная булевая индексация.
  • Малые DataFrame: для DataFrame с <1000 строк numexpr не задействуется, а парсинг строки добавляет overhead — булевая индексация быстрее.
  • Изменение результата: query возвращает view или copy в зависимости от версии Pandas и CoW-настроек — не назначайте значения в результат query напрямую.

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

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

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

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

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

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

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

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

Источники

  • https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html
  • https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.query.html

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

Pandasdata-aidata-processingpandasperformance-debugging

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

  • ML-инженер
  • Senior Data Scientist
  • Data Engineer
  • Middle+ Data Scientist — GenAI & Agentic AI
  • Стажер Data Scientist