Фильтрация и выборка данных в Pandas: практические примеры

Мы просто и по делу рассказываем про ИИ-инструменты для работы: сравнения, пошаговые гайды, бесплатные альтернативы и реальные сценарии применения. Помогаем выбрать между ChatGPT, Gemini, Claude, локальными моделями и десятками узкоспециализированных сервисов — от дизайна и HR до аналитики и SEO. Меньше хайпа, больше практики и экономии времени каждый день.

pandasфильтрациявыборка

Pandas — один из главных инструментов аналитика, дата-инженера и Python-разработчика. На практике чаще всего нужны не сложные модели, а быстрые ответы на вопросы: как отфильтровать строки, выбрать нужные столбцы, найти пропуски или отобрать данные по нескольким условиям.

Выбор столбцов

df['name']              # один столбец
df[['name', 'age']]     # несколько столбцов

Если нужен срез данных для отчёта или проверки — это базовый и самый частый сценарий.

Фильтрация строк по условию

df[df['age'] > 30]

Так можно быстро выбрать пользователей старше 30 лет, заказы дороже определённой суммы или события за нужный период.

Несколько условий

df[(df['age'] > 30) & (df['city'] == 'Moscow')]
df[(df['age'] < 18) | (df['status'] == 'student')]

Важно:

  • для `И` используется `&`
  • для `ИЛИ` — `|`
  • каждое условие берётся в скобки

Фильтрация по списку значений

df[df['city'].isin(['Moscow', 'Kazan', 'Sochi'])]

Подходит, когда нужно оставить записи только по нужным регионам, категориям или статусам.

Исключение значений

df[~df['status'].isin(['deleted', 'blocked'])]

Символ `~` инвертирует условие — удобно для очистки данных.

Работа с пропусками

df[df['email'].isna()]      # где email отсутствует
df[df['phone'].notna()]     # где phone заполнен

Это полезно при аудите качества данных и подготовке датасета к обработке.

Фильтрация по строкам

df[df['name'].str.contains('Иван', na=False)]
df[df['email'].str.endswith('@gmail.com', na=False)]

Методы `.str` помогают искать подстроки, домены, префиксы и шаблоны в текстовых полях. ✉️

Выборка через `query()`

df.query("age > 30 and city == 'Moscow'")

Такой синтаксис часто читается проще, особенно в длинных фильтрах.

Получение первых строк после фильтрации

df[df['price'] > 1000].head(5)

Полезно для быстрой проверки результата без вывода всей таблицы. ⚡

Сортировка после выборки

df[df['category'] == 'laptop'].sort_values('price', ascending=False)

Частый кейс: сначала отобрать нужные данные, потом отсортировать по дате, сумме или рейтингу.

Практический пример

result = df[
    (df['salary'] > 120000) &
    (df['experience'] >= 3) &
    (df['city'].isin(['Москва', 'Санкт-Петербург']))
][['name', 'salary', 'city']]

Так можно получить список подходящих кандидатов, клиентов или товаров по нескольким критериям. 💼

Что важно запомнить

  • `df[...]` — основной способ фильтрации
  • `isin()` удобен для списков значений
  • `isna()` и `notna()` — для пропусков
  • `str.contains()` — для текстовых полей
  • `query()` делает сложные условия более читаемыми

Грамотная фильтрация в Pandas экономит часы работы и помогает быстро находить нужные данные даже в больших таблицах. 🚀

📚 Ниже по ленте — мягко рекомендую посмотреть подборку каналов про IT: там много полезного по Python, аналитике, data engineering и разработке.

🗣 Подборки каналов
🧠 Каталог ботов и приложений
🗺 Навигация

Читайте так же