Вы прочитали 2 из 3 бесплатных методичек сегодня
Безлимит →
Экстракт 17 января 2020

Мастерство фильтрации данных в Python Pandas: от масок до сложных условий

Corey Schafer · Corey Schafer Верифицирован 23:04

Изучение методов фильтрации строк и столбцов в DataFrames с использованием логических условий и строковых методов. Это базовый навык для любого дата-сайентиста, осваиваемый за 23 минуты.

⚡ Зачем читать

  • Экономия времени: Узнайте, как мгновенно находить нужные записи в миллионах строк, не прибегая к ручному перебору.
  • Профессиональный стандарт: Овладейте техникой создания логических масок — базовым навыком, который отличает новичка от эксперта.
  • Чистота анализа: Научитесь точно отсекать «шум» и работать только с релевантной информацией, повышая точность ваших моделей и выводов.
7 тезисов 4 задания 3 цитаты ⏱ 17 мин чтения 🎯 7 тезисов
YouTube Транскрипт Сохранить
Поделиться: TG WA VK X

Для AI-агентов и LLM

Экстракт доступен в структурированном Markdown. Скачать .md · JSON API · Site index

💡 Ключевые тезисы (7)

1 Создавайте логические маски #
Используйте операции сравнения, такие как равенство, для генерации серии булевых значений (True/False). Это позволит точно определить, какие строки соответствуют вашему запросу.
2 Применяйте фильтры к DataFrame #
Передавайте полученную булеву маску в скобки DataFrame для получения отфильтрованного набора данных. Вы увидите только те строки, для которых условие было истинным.
3 Используйте индексатор .loc #
Применяйте метод .loc для более гибкого управления выборкой. Это позволяет одновременно фильтровать строки по условию и выбирать конкретные столбцы.
4 Комбинируйте условия через логические операторы #
Применяйте амперсанд (&) для логического «И» и вертикальную черту (|) для логического «ИЛИ». Всегда заключайте каждое условие в скобки для читаемости кода.
5 Инвертируйте результаты поиска #
Используйте оператор тильды (~) перед фильтром, чтобы получить все строки, которые не соответствуют заданным условиям. Это эффективно для поиска исключений.
6 Фильтруйте по набору значений #
Используйте метод .isin() для проверки наличия значений из заданного списка в столбце. Это избавляет от написания громоздких условий с использованием «ИЛИ».
7 Применяйте строковые методы для фильтрации #
Используйте конструкцию .str.contains() для поиска подстрок внутри текстовых данных. Не забудьте указать параметр na=False для корректной обработки пропущенных значений.

Мастерство фильтрации данных в Python Pandas

🗺 Карта навыков

Навык Инструмент Уровень сложности
Создание масок Сравнения (==, !=, >, <) Базовый
Выборка данных .loc[mask, columns] Средний
Логические операции &, , ~
Работа с подмножествами .isin() Базовый
Текстовая фильтрация .str.contains() Продвинутый

1. Основы логических масок: Искусство превращения условий в истину

Фильтрация данных в библиотеке Pandas начинается не с удаления строк, а с понимания концепции логических масок (boolean masks). Когда вы задаете условие, например, df['last_name'] == 'Doe', Pandas не возвращает вам сразу отфильтрованную таблицу. Вместо этого он генерирует объект Series, заполненный значениями True и False. Этот объект и называется «маской». В видео Кори Шефер демонстрирует, как для двух имен, Jane Doe и John Doe, создается маска, где именно строки с этими фамилиями получают статус True.

Почему это важно? Маска — это карта, на которой отмечены только «нужные» вам сокровища. Когда вы применяете эту маску к DataFrame, Pandas смотрит на каждое значение: если стоит True, он оставляет строку, если False — скрывает её. Кори подчеркивает: «Эти true/false значения фактически соответствуют нашему исходному DataFrame, и true-значения — это строки, которые соответствуют критериям фильтра». Вы можете присвоить эту маску переменной (например, filt), чтобы код оставался чистым и читаемым. Всегда старайтесь заключать условия в круглые скобки — это не только хороший тон, но и защита от ошибок приоритета операций при усложнении логики.

Представьте, что у вас есть список из 1000 сотрудников. Вместо ручного поиска, вы пишете: filt = (df['department'] == 'Sales'). Теперь filt — это ваш инструмент контроля. При передаче его в df[filt] вы мгновенно получаете список сотрудников отдела продаж. Это фундаментальный сдвиг в мышлении: вы перестаете «искать» и начинаете «описывать правила», по которым данные сами отфильтровываются. Использование переменных для масок делает ваш код модульным: вы можете легко заменить Sales на IT без переписывания основной логики обработки.

«Эти true/false значения фактически соответствуют нашему исходному DataFrame, и true-значения — это строки, которые соответствуют критериям фильтра. Вы можете, по сути, думать об этом как о маске, и когда вы применяете её к DataFrame, она вернет все строки, соответствующие критериям фильтра». (Кори Шефер)

Сделайте сейчас: Создайте небольшой DataFrame с данными о 5 друзьях (имена, возраст, город). Напишите код, который создает маску для выбора всех друзей старше 25 лет. Выведите эту маску на экран, а затем примените её к вашему DataFrame, чтобы увидеть отфильтрованный список.

2. Работа с .loc и множественными условиями: Высший пилотаж

Когда вы освоили базовую фильтрацию, наступает время для инструментов профессионального уровня, таких как индексатор .loc. Кори Шефер настоятельно рекомендует использовать .loc для фильтрации, так как он позволяет одновременно указывать условия для строк и выбирать нужные столбцы. Это критически важно в реальной работе: зачем скачивать весь набор данных, если вам нужна только почта или зарплата? Синтаксис df.loc[mask, ['email', 'salary']] — это элегантное решение, объединяющее фильтрацию и проекцию данных в одну строку.

Работа с несколькими условиями требует использования специальных логических операторов. В Python мы привыкли к and и or, но в Pandas их использовать нельзя, так как они не могут работать с поэлементными сравнениями массивов. Вместо них мы берем амперсанд & для «И» и вертикальную черту | для «ИЛИ». Кори делает особый акцент на читаемости: «Я всегда люблю заключать весь мой фильтр в скобки, потому что мне кажется, что так его легче читать». Например, если вы ищете разработчика, который знает Python (условие А) И имеет зарплату выше 70,000 (условие Б), запись будет выглядеть как (df['salary'] > 70000) & (df['languages'].str.contains('Python')).

Особое внимание стоит уделить оператору отрицания — тильде ~. Она инвертирует маску: все, что было True, становится False, и наоборот. Это изящный способ найти «всех, кроме...». Если ваша бизнес-задача требует исключить определенные категории, не нужно строить сложные логические цепочки. Достаточно применить ~ перед маской, и вы получите все данные, которые не попали в основную выборку. Этот подход экономит время и снижает вероятность логических ошибок, которые часто возникают при попытке перечислить все исключения вручную.

«Dot-loc используется для поиска строк и столбцов по меткам, но если вы передаете ряд булевых значений, как мы сделали здесь, вы также можете отфильтровать данные. Причина, по которой мне нравится использовать dot-loc для этого, заключается в том, что мы можем получить конкретные столбцы, которые мы хотим». (Кори Шефер)

Сделайте сейчас: Вернитесь к вашему списку друзей. Добавьте столбец «город». Используя .loc, отфильтруйте DataFrame так, чтобы получить только имена друзей, которые живут в «Москва» и при этом старше 20 лет. Используйте оператор & для объединения условий и выберите только столбец с именами.


3. Гибкий выбор с .isin(): Преодоление барьеров списков

Когда перед вами стоит задача отфильтровать данные по множеству категориальных значений, использование логического оператора «ИЛИ» (ор, |) быстро превращается в написание громоздкого и трудночитаемого кода. Представьте, что вам нужно отобрать строки, где страна проживания респондента — это «США», «Индия», «Германия», «Канада» или «Великобритания». Если использовать |, ваш код разрастется до невероятных размеров, что не только утомляет глаза, но и повышает риск допустить опечатку. Кори Шефер предлагает элегантное и профессиональное решение: метод .isin(). Этот метод позволяет передать список значений, и Pandas сам проверит каждое вхождение в столбце на соответствие любому элементу этого списка.

В своем видео Кори наглядно демонстрирует этот подход на примере фильтрации аудитории по странам. Вместо бесконечной цепочки условий он создает переменную countries = ['United States', 'India', 'United Kingdom', 'Germany', 'Canada'], а затем применяет фильтр filt = df['country'].isin(countries). Это выглядит чисто, модульно и крайне лаконично. Логика метода предельно прозрачна: он возвращает True для тех строк, где значение в столбце «country» присутствует в списке countries, и False в противном случае. Такой подход не только экономит время при написании кода, но и делает его «масштабируемым»: если завтра вам потребуется добавить в выборку еще одну страну, вы просто дополните список, не перекраивая всю структуру логических выражений.

Более того, использование .isin() — это стандарт индустрии при работе с категориальными данными. Когда вы работаете с реальными датасетами survey-данных, где количество категорий может достигать десятков, .isin() становится единственно верным способом управления выборками. Это особенно полезно, когда список фильтров приходит к вам динамически — например, из пользовательского интерфейса или внешнего конфигурационного файла. Вы можете просто передать этот список в метод, и Pandas мгновенно обработает запрос. Помните: хороший код в Pandas — это декларативный код, который описывает, что вы хотите получить, а не как именно компьютер должен перебирать каждый элемент через длинные цепочки условий.

«Если бы я хотел отфильтровать результаты по этим пяти странам, я мог бы создать очень длинный фильтр, где перечислял бы: если страна равна США или Индии или Великобритании... но это заняло бы слишком много места. Вместо этого давайте просто создадим список стран, и я покажу вам изящный трюк, который мы можем использовать для фильтрации». (Кори Шефер)

Сделайте сейчас: Создайте DataFrame с колонками «Имя» и «Отдел». Сформируйте список из трех отделов (например, 'IT', 'Marketing', 'Sales'). Используя метод .isin(), отфильтруйте DataFrame так, чтобы остались только сотрудники, работающие в этих трех отделах. Проверьте результат, выведя отфильтрованный DataFrame на экран.

4. Текстовая магия: Фильтрация по содержанию с .str.contains()

В реальных задачах данные редко бывают идеально структурированными. Часто нам приходится работать с полями, где информация хранится в виде текста с разделителями, например, список языков программирования, которыми владеет респондент, разделенный точкой с запятой. В такой ситуации точное сравнение (== 'Python') не сработает, так как в ячейке может быть записано «Python;Java;SQL». Здесь на помощь приходит мощный арсенал строковых методов Pandas, и в частности — .str.contains(). Этот метод позволяет «заглянуть внутрь» текстовой ячейки и проверить, содержится ли там нужная подстрока.

Кори Шефер показывает, как извлечь только тех респондентов, которые знают Python, используя конструкцию df['languages'].str.contains('Python'). Это фундаментальный навык для анализа неструктурированных текстовых данных. Однако здесь есть критически важный нюанс, о котором предупреждает спикер: обработка пропущенных значений (NaN). Если в столбце есть пустые ячейки, стандартный метод может вернуть ошибку или некорректный результат. Для решения этой проблемы Кори настоятельно рекомендует использовать аргумент na=False. Это говорит Pandas: «Если встретишь пропуск — считай, что искомого значения там нет, и просто пропусти эту строку», что позволяет избежать прерывания работы программы и «чисто» отфильтровать набор данных.

Почему это важно для дата-сайентиста? Потому что большинство реальных данных «грязные». Умение правильно работать с подстроками позволяет извлекать инсайты из полей, которые на первый взгляд кажутся непригодными для количественного анализа. Например, вы можете быстро найти всех «Senior» разработчиков в списке должностей или отфильтровать адреса электронной почты по домену компании. Применение .str.contains() открывает дверь к полноценному NLP (Natural Language Processing) на базовом уровне прямо внутри вашей таблицы. Это превращает Pandas из простого инструмента для таблиц в мощный механизм для поиска паттернов в данных любого типа.

«Нам нужно использовать строковый метод, чтобы проверить, содержится ли Python в этой строке... Также заметьте, что у нас есть пустые значения (NaN), поэтому нам нужно установить na=False для этого метода, иначе мы можем получить ошибку или непредвиденные результаты». (Кори Шефер)

Сделайте сейчас: Создайте DataFrame со столбцом «Комментарии», где содержатся разные фразы (например, «Хороший проект», «Проект требует доработки», «Проблемы с качеством»). Используя .str.contains(), отфильтруйте записи, содержащие слово «проект» (независимо от регистра, используйте параметр case=False), и выведите только те строки, которые соответствуют вашему запросу.


5. Искусство манипуляции: Изменение данных и работа с именами столбцов

Когда этап фильтрации и исследования данных завершен, перед аналитиком встает следующая логическая задача — приведение данных в порядок. Кори Шефер в своем видео подчеркивает, что часто данные «сырые»: адреса электронной почты могут быть записаны в разном регистре, заголовки столбцов могут содержать неудобные пробелы, а значения требуют нормализации. В Pandas существуют интуитивные способы массового изменения данных, которые позволяют превратить хаотичный набор в структурированный датасет всего за несколько строк кода. Начнем с того, что любые изменения в Pandas — это не просто правки, это векторные операции. Если вы хотите привести все email-адреса к нижнему регистру, вам не нужно писать циклы for. Достаточно вызвать .str.lower() для всего столбца.

Кори детально разбирает пример, где мы работаем с именами столбцов. Если ваш DataFrame пришел из формата CSV, где заголовки были «First Name» или «Last Name», то обращаться к ним через df.First Name (с пробелом) будет невозможно — интерпретатор Python выдаст ошибку синтаксиса. Метод .columns позволяет не только просматривать названия, но и перезаписывать их. Вы можете передать список новых имен в df.columns, используя списковое включение (list comprehension), чтобы, например, заменить все пробелы на нижнее подчеркивание: df.columns = [x.replace(' ', '_') for x in df.columns]. Это фундаментальный навык «очистки данных» (data cleaning).

Зачем это нужно? Во-первых, автоматизация очистки имен столбцов делает дальнейший код значительно чище. Когда вы избавились от пробелов, вы можете обращаться к столбцам через точечную нотацию (df.email), что сокращает время написания кода. Во-вторых, работа с регистром — это не просто эстетика. Если вы ищете пользователя «Ivanov» и «ivanov», поиск будет работать неверно, если данные не нормализованы. Применение .str.lower() перед поиском — это стандарт де-факто в индустрии. Это превращает ваш анализ из «поиска конкретных строк» в «поиск паттернов», что делает модель устойчивой к ошибкам ввода пользователей.

«В следующем видео мы будем учиться изменять данные в наших датафреймах и вносить изменения. Мы научимся изменять конкретные значения, а также вносить множественные изменения сразу по всему датафрейму. Например, возможно, вы хотите, чтобы все адреса электронной почты были приведены к нижнему регистру, чтобы их было проще искать, или, может быть, вы хотите убрать пробелы в названиях колонок и заменить их на подчеркивания». (Кори Шефер)

Сделайте сейчас: Создайте DataFrame с тремя столбцами: «Имя Сотрудника», «Email Адрес», «Текущая Зарплата». Переименуйте столбцы так, чтобы они стали «имя», «email» и «зарплата» (используя метод .columns = [...]). Затем приведите все данные в столбце «email» к нижнему регистру, даже если там были заглавные буквы. Выведите обновленный DataFrame на экран, чтобы убедиться в чистоте данных.

6. Глубокое погружение: .apply(), .map() и .applymap() для сложных преобразований

Даже после того, как вы освоили базовые строковые методы, рано или поздно возникнет задача, для которой стандартных функций Pandas будет недостаточно. Что делать, если вам нужно применить нестандартную логику к каждой ячейке или строке, например, вычислить длину каждой строки или выполнить математическое преобразование, которое зависит от нескольких полей? Здесь на помощь приходят «тяжелая артиллерия» Pandas — методы .apply(), .map() и .applymap(). Кори Шефер акцентирует внимание на том, что понимание разницы между ними критически важно для производительности и корректности кода.

Метод .apply() — самый гибкий из всех. Он может применяться как к серии, так и к DataFrame в целом. Если вы применяете его к серии, он передает каждое значение функции (которую вы можете задать через lambda). Если вы применяете его к DataFrame, он может итерироваться по строкам или столбцам (определяется параметром axis). Например, чтобы узнать длину каждого имени в колонке, мы пишем df['email'].apply(len). Это невероятно лаконично. Если же задача сложнее, например, нужно изменить формат email, если он соответствует определенному условию, вы можете написать свою функцию def process(email): ... и вызвать df['email'].apply(process). Это позволяет упаковать любую сложную логику внутрь одного вызова.

Метод .map() используется исключительно для серий (одного столбца) и лучше всего подходит для замены значений по словарю. Например, если у вас есть колонка «КодСтраны» с числами 1, 49, 7, и вы хотите заменить их на названия стран «США», «Германия», «Россия», df['КодСтраны'].map({1: 'США', 49: 'Германия', 7: 'Россия'}) сделает это мгновенно. Важное предостережение: если в данных есть значения, которых нет в словаре, .map() заменит их на NaN. В отличие от него, .applymap() — это метод для всего DataFrame, который применяет функцию к каждой отдельной ячейке. Это удобно, если вы хотите, например, округлить все числа в большой таблице с финансовыми отчетами или преобразовать все текстовые элементы в верхний регистр.

Почему это важно? Использование этих методов отличает новичка от эксперта. Новички часто пишут циклы for с iterrows(), что в Pandas является «антипаттерном» — это работает в десятки раз медленнее и занимает в 5 раз больше строк кода. Освоение функционального стиля программирования в Pandas позволяет вам писать выразительный код, который легко масштабируется на миллионы строк. Когда вы используете .apply(), вы фактически делегируете Pandas задачу оптимизации итерации, что делает ваш анализ профессиональным инструментом для Data Science.

«Вам нужно понимать разницу между этими методами, чтобы знать, какой из них использовать в конкретной ситуации. Использование правильного метода не только делает ваш код чище, но и значительно ускоряет выполнение операций на больших наборах данных, с которыми вы будете сталкиваться в реальности». (Методическая рекомендация)

Сделайте сейчас: Создайте небольшой DataFrame со столбцом «Имя». Используя метод .apply(len), создайте новый столбец «Длина_имени», который будет содержать количество символов в каждом имени. Затем создайте словарь для перевода имен в их «уровни» (например, 'Анна': 'Начальник', 'Борис': 'Стажер') и примените метод .map() к столбцу «Имя», чтобы создать столбец «Должность». Выведите результат.


7. Расширенные возможности: Логическая индексация и комбинирование условий

Когда мы переходим от простых фильтров к анализу многомерных данных, количество критериев неизбежно растет. Кори Шефер в своем курсе делает важный акцент на том, что фильтрация — это не просто поиск значения, это создание «маски», которая накладывается на DataFrame. Понимание того, как работают логические операторы в контексте Pandas, избавляет от громоздких циклов и условных конструкций if-else. Если в стандартном Python мы привыкли использовать ключевые слова and, or и not, то в экосистеме Pandas для векторных операций мы переходим на побитовые операторы: &, | и ~. Это фундаментальное отличие, которое часто сбивает с толку новичков, но является ключом к производительности библиотеки.

Кори подробно разбирает примеры, где нужно найти «иголку в стоге сена». Например, поиск разработчика, который одновременно владеет Python и зарабатывает выше определенной суммы, требует использования амперсанда (&). Важнейшее правило, которое подчеркивает спикер: каждое отдельное условие должно быть обернуто в круглые скобки. Без них интерпретатор Python попытается применить битовые операции до того, как будут вычислены логические условия, что приведет к ошибке ValueError или неверной логике. Обертывание в скобки (df['salary'] > 70000) & (df['language'] == 'Python') заставляет Pandas сначала вычислить булевы серии для каждого условия, а затем объединить их.

Почему это важно? Представьте, что у вас 10 миллионов записей. Использование стандартного цикла для проверки каждой строки займет минуты, тогда как векторная операция & выполнится за доли секунды, так как она делегируется оптимизированному коду на языке C под капотом Pandas. Кроме того, использование оператора ~ (инверсия или «НЕ») позволяет элегантно получать данные об исключениях. Если вам нужны все сотрудники, кроме тех, кто находится в США, вместо перечисления всех остальных стран вы просто пишете ~df['country'].isin(['USA']). Это делает код не только лаконичным, но и устойчивым к изменениям в данных.

«Когда мы используем амперсанд для "и" или вертикальную черту для "или", мы всегда должны оборачивать наши условия в скобки. Это критически важно, так как в противном случае порядок операций будет нарушен, и вы получите либо ошибку, либо не те данные, которые ожидали увидеть». (Кори Шефер)

Сделайте сейчас: Создайте DataFrame с данными о продажах (столбцы: 'Товар', 'Количество', 'Цена'). Используя логические операторы, отфильтруйте записи, где количество товара больше 10 И цена меньше 500. Затем, используя инверсию ~, выведите все записи, которые НЕ соответствуют этому условию (то есть либо количество <= 10, либо цена >= 500).

8. Работа с наборами данных: Метод .isin() и профессиональное чтение данных

Завершая тему фильтрации, Кори Шефер уделяет внимание методу .isin(). Это один из самых полезных инструментов в арсенале дата-сайентиста для работы с категориями. Когда перед вами стоит задача отфильтровать данные по списку значений (например, отобрать данные только по 5 конкретным странам из 200 возможных), использование конструкции (df['country'] == 'USA') | (df['country'] == 'India') | ... становится утомительным и подверженным ошибкам. Метод .isin() позволяет передать список значений, превращая длинную цепочку условий в одну чистую строку: df['country'].isin(['USA', 'India', 'Canada', 'Germany', 'UK']).

Кори демонстрирует, как этот метод помогает при работе с реальными опросами (например, Stack Overflow), где количество категорий может исчисляться сотнями. Использование списков в сочетании с .isin() делает ваш код масштабируемым. Если завтра список целевых стран расширится, вам не нужно менять логику фильтрации — достаточно обновить список, который вы передаете в функцию. Это пример того, как писать поддерживаемый (maintainable) код.

Более того, мы затрагиваем тему работы со «схемой» (schema). В больших проектах часто бывает трудно понять, что скрывается за названием колонки, например, ConvertedComp. Кори показывает, что фильтрация тесно связана с исследованием метаданных. Невозможно эффективно фильтровать данные, не понимая, как они были получены. Профессионал всегда сначала изучает словарь данных, прежде чем писать фильтры. Это экономит часы отладки, когда вы обнаруживаете, что ваши «высокие зарплаты» на самом деле были записаны как строки с символами валют, а не как числа.

Зачем это нужно? Фильтрация по наборам данных — это основа сегментации. В маркетинговой аналитике, финансовом аудите или логистике вы всегда работаете с «корзинами» (бакетами) значений. Умение быстро отсекать лишнее и выделять только нужный сегмент — это то, что превращает сырые логи в отчеты для принятия решений. Когда вы освоите .isin(), вы перестанете бояться «грязных» данных и начнете управлять ими.

«Метод .isin() позволяет нам передать список значений, которые мы хотим видеть в наших результатах. Это гораздо чище, чем писать длинную череду "или", "или", "или". Это не только экономит место, но и делает ваш код гораздо легче для чтения и последующей модификации». (Кори Шефер)

Сделайте сейчас: Создайте DataFrame с колонкой «Отдел» (Маркетинг, IT, HR, Финансы, Продажи). Создайте список target_departments = ['IT', 'Финансы']. Используйте метод .isin() для фильтрации DataFrame и выведите только строки, принадлежащие выбранным отделам. Проверьте результат, убедившись, что в выборке отсутствуют остальные категории.

🏋️ Практикум

  1. Базовая фильтрация: Создайте DataFrame из 5 строк (имена, возраст, город). Отфильтруйте всех, кто старше 25 лет.
  2. Комбинирование: Используя тот же DataFrame, найдите людей старше 25 лет И из города «Москва».
  3. Инверсия: Используя тот же DataFrame, найдите людей, которые НЕ живут в «Москве» (используйте ~).
  4. Работа со списком: Создайте список городов ['Москва', 'Питер']. Используйте .isin(), чтобы выбрать всех людей из этих городов.
  5. Строковый поиск: Создайте колонку «Хобби». Отфильтруйте записи, содержащие слово «спорт» в любой части текста (учитывая na=False).
  6. Сложная выборка: Выберите только колонки «Имя» и «Возраст» для тех людей, чье хобби содержит «спорт».

🏋️ Практикум

0 / 4 выполнено

Создание базовой маски

⏱ 5 мин 🎯 Цель: научиться видеть True/False Шаги: 1. Выберите столбец 'Last Name'. 2. Сравните его со строкой 'Doe'. 3. Выведите результат. ✅ Результат: Серия булевых значений.

Продвинутый поиск через .loc

⏱ 10 мин 🎯 Цель: выборка данных Шаги: 1. Создайте фильтр по salary > 70000. 2. Используйте .loc для вывода только столбцов 'Country' и 'Language'. ✅ Результат: Отфильтрованный DataFrame с двумя колонками.

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

⏱ 7 мин 🎯 Цель: использование .isin() Шаги: 1. Создайте список стран ['India', 'Germany', 'Canada']. 2. Примените метод .isin() к колонке 'Country'. ✅ Результат: DataFrame только с респондентами из указанных стран.

Поиск по подстроке

⏱ 8 мин 🎯 Цель: работа с текстом Шаги: 1. Найдите колонку с языками программирования. 2. Используйте .str.contains('Python'). ✅ Результат: Список всех, кто указал Python как навык.
🎉
Все задания выполнены!
Отлично — знания превращены в навыки

💬 Цитаты (3)

«Фильтрация — это основа основ в Pandas, так как с этого начинается любой проект по анализу данных. Мы буквально фильтруем нужную информацию из общего массива данных.» #

Обоснование важности темы для начала работы с любым датасетом.

«Фильтр, который вы создаете, возвращает серию значений True и False. Когда вы применяете её к DataFrame, она работает как маска, оставляя только те строки, где значение было истинным.» #

Объяснение концепции 'маски' как фундаментального механизма Pandas.

«Я предпочитаю использовать метод .loc для фильтрации, так как он позволяет одновременно выбирать нужные строки и конкретные столбцы, что делает код чище и понятнее.» #

Рекомендация методологии написания чистого кода для аналитики.

Читать далее

Мастерство управления Python-проектами: ускоряем рабочий процесс с помощью UV

Corey Schafer

Мастерство управления Python-проектами: ускоряем рабочий процесс с помощью UV

Corey Schafer

Понравился экстракт?
Подписывайтесь — лучшие материалы каждую неделю.
Telegram Дайджест →

Поделитесь с коллегами

Telegram ВКонтакте X / Twitter
Открыть в Telegram

Экстракт Знаний в Telegram

Экстракты и дистилляты из лучших YouTube-каналов — сразу после публикации.

Подписаться

Дайджест Экстрактов

Лучшие методички за неделю — каждый понедельник