Image

Всё о функциональности цепочки методов в Pyjanitor и почему она полезна.

Чистый код, чистые данные: почему подход Pyjanitor к цепочке методов — это путь к достижению этой двойной цели.

Всё о функциональности цепочки методов в Pyjanitor и почему она полезна.
Изображение предоставлено редактором.

# Введение

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

Pyjanitor предлагает более чистый подход к выполнению этих шагов. Эту библиотеку можно использовать вместе с концепцией цепочки методов для преобразования трудоемких процессов очистки данных в конвейеры, которые выглядят элегантно, эффективно и читаемо.

В этой статье показано, как работает цепочка вызовов методов, и дана соответствующая информация в контексте Pyjanitor и очистки данных.

# Понимание цепочки методов

Цепочка вызовов методов — не новинка в программировании: на самом деле, это хорошо зарекомендовавший себя шаблон кодирования. Он заключается в последовательном вызове нескольких методов объекта: всё в одном операторе. Таким образом, вам не нужно переназначать переменную после каждого шага, поскольку каждый метод возвращает объект, который вызывает следующий присоединенный метод, и так далее.

Следующий пример поможет понять основную концепцию. Обратите внимание, как мы могли бы внести несколько простых изменений в небольшой фрагмент текста (строку), используя «стандартный» Python:

text = «Привет, мир!» text = text.strip() text = text.lower() text = text.replace(«world», «python»)

В результате в текстовом виде будет отображаться: «hello python!».

Теперь, при использовании цепочки методов, тот же процесс будет выглядеть следующим образом:

text = «Привет, мир!» cleaned_text = text.strip().lower().replace(«world», «python»)

Обратите внимание, что логическая последовательность применяемых операций идет слева направо: все в единой, цельной цепочке мыслей!

Если вы поняли, то теперь прекрасно разбираетесь в концепции цепочки методов. Давайте теперь перенесём это видение в контекст науки о данных с использованием Pandas . Стандартная очистка данных в датафрейме, состоящая из нескольких шагов, обычно выглядит так без использования цепочки методов:

# Традиционный пошаговый подход Pandas df = pd.read_csv(«data.csv») df.columns = df.columns.str.lower().str.replace(' ', '_') df = df.dropna(subset=['id']) df = df.drop_duplicates()

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

# Ввод приложения Pyjanitor: пример приложения

Сама библиотека Pandas в некоторой степени обеспечивает встроенную поддержку цепочек методов. Однако некоторые из её основных функций не были разработаны строго с учётом этого шаблона. Это основная причина создания Pyjanitor, основанного на почти одноимённом пакете R: janitor.

По сути, Pyjanitor можно рассматривать как расширение для Pandas, предоставляющее набор пользовательских процессов очистки данных в удобном для цепочек методов виде. Примеры имен методов его интерфейса прикладного программирования (API) включают clean_names(), rename_column(), remove_empty() и так далее. Его API использует набор интуитивно понятных имен методов, которые выводят выразительность кода на совершенно новый уровень. Кроме того, Pyjanitor полностью опирается на инструменты с открытым исходным кодом и может беспрепятственно работать в облачных и ноутбуковых средах, таких как Google Colab.

Давайте разберемся, как работает цепочка вызовов методов в Pyjanitor, на примере, в котором мы сначала создадим небольшой синтетический набор данных, который намеренно выглядит неаккуратно, и поместим его в объект Pandas DataFrame.

ВАЖНО: чтобы избежать распространенных, но довольно неприятных ошибок, связанных с несовместимостью версий библиотек, убедитесь, что у вас установлены последние доступные версии Pandas и Pyjanitor, предварительно выполнив команду `!pip install —upgrade pyjanitor pandas`.

messy_data = { 'Имя': ['Alice', 'Bob', 'Charlie', 'Alice', None], 'Фамилия': ['Smith', 'Jones', 'Brown', 'Smith', 'Doe'], 'Возраст': [25, np.nan, 30, 25, 40], 'Дата рождения': ['1998-01-01', '1995-05-05', '1993-08-08', '1998-01-01', '1983-12-12'], 'Зарплата ($)': [50000, 60000, 70000, 50000, 80000], 'Empty_Col': [np.nan, np.nan, np.nan, np.nan, np.nan] } df = pd.DataFrame(messy_data) print(«— Беспорядочные исходные данные —«) print(df.head(), «n»)

Теперь мы определяем цепочку методов Pyjanitor, которая применяет ряд обработок как к именам столбцов, так и к самим данным:

cleaned_df = ( df .rename_column('Salary ($)', 'Salary') # 1. Вручную исправьте сложные названия ПЕРЕД тем, как их исказить .clean_names() # 2. Стандартизируйте все (превратите в 'salary') .remove_empty() # 3. Удалите пустые столбцы/строки .drop_duplicates() # 4. Удалите повторяющиеся строки .fill_empty( # 5. Заполните пропущенные значения column_names=['age'], # ВНИМАНИЕ: после предыдущих шагов предполагайте, что имя написано строчными буквами: 'age' value=df['Age'].median() # Извлеките медиану из исходного необработанного df ) .assign( # 6. Создайте новый столбец, используя assign salary_k=lambda d: d['salary'] / 1000 ) ) print(«— Очищенные данные Pyjanitor —«) print(cleaned_df)

Приведённый выше код понятен сам по себе, а встроенные комментарии поясняют каждый метод, вызываемый на каждом этапе цепочки.

Это результат работы нашего примера, в котором сравниваются исходные некорректные данные с очищенной версией:

— Некорректные исходные данные — Имя Фамилия Возраст Дата рождения Зарплата ($) Пустой столбец 0 Элис Смит 25.0 1998-01-01 50000 NaN 1 Боб Джонс NaN 1995-05-05 60000 NaN 2 Чарли Браун 30.0 1993-08-08 70000 NaN 3 Элис Смит 25.0 1998-01-01 50000 NaN 4 NaN Доу 40.0 1983-12-12 80000 NaN — Очищенные данные уборщика — имя__фамилия возраст дата рождения зарплата зарплата_к 0 Элис Смит 25.0 1998-01-01 50000 50.0 1 Боб Джонс 27,5 05.05.1995 60000 60,0 2 Чарли Браун 30,0 8 августа 1993 70000 70,0 4 NaN Доу 40,0 12 декабря 1983 80000 80,0

# Завершение

В этой статье мы научились использовать библиотеку Pyjanitor для применения цепочек методов и упрощения трудоемких процессов очистки данных. Это делает код чище, выразительнее и — в некотором смысле — самодокументируемым, так что другие разработчики или вы сами в будущем сможете прочитать конвейер обработки данных и легко понять, что происходит на этом пути от исходных данных до готового набора данных.

Отличная работа!

Иван Паломарес Карраскоса — лидер, писатель, спикер и консультант в области искусственного интеллекта, машинного обучения, глубокого обучения и магистратуры. Он обучает и направляет других в применении ИИ в реальном мире.

Источник: www.kdnuggets.com

✅ Найденные теги: Pyjanitor, Все, Методов, новости, польза, Функциональность, Цепочка

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Ракета на стартовой площадке на фоне заката у воды.
Цифра 5,000,000 и мониторы Samsung Display в светлой комнате.
Белая ракета поднимается в небо на фоне облаков.
Абстрактное изображение, напоминающее космическую туманность с яркими цветами на черном фоне.
Космическая туманность с яркими цветами на темном фоне космоса.
Вулканический кратер с бирюзовой водой, вид с высоты в океане.
Столкновение планет в космосе, вспышка огня и метеориты, разрушение и космический катаклизм.
Исследователь в лаборатории перед компьютером, научное оборудование на заднем плане.
Компьютер с круглым устройством и смартфоном на белом фоне, обмен данными.
Image Not Found
Цифра 5,000,000 и мониторы Samsung Display в светлой комнате.

Samsung преодолела рубеж в 5 миллионов поставленных матриц QD-OLED

У подразделения Samsung, занимающегося производством матриц для мониторов, настал памятный момент: оно оповестило о том, что в марте этого года ему удалось преодолеть рубеж в 5 миллионов поставленных матриц QD-OLED для игровых мониторов, не затрагивая данные о…

Апр 9, 2026
Исследователь в лаборатории перед компьютером, научное оборудование на заднем плане.

Уральские астрохимики создали спектральную библиотеку для анализа данных крупнейшего космического телескопа

Первый автор статьи — лаборант-исследователь научной лаборатории астрохимических исследований УрФУ Варвара Картеева © Антон Васюнин / УрФУ. Ученые в лаборатории воссоздали содержащие метан межзвездные льды, которые широко наблюдаются в космическом пространстве, и впервые получили их инфракрасные «отпечатки»…

Апр 9, 2026
Компьютер с круглым устройством и смартфоном на белом фоне, обмен данными.

Мини-ПК нового формата: что умеет Lenovo Yoga Mini i Gen 11

Компактный настольный компьютер Yoga Mini i Gen 11 от Lenovo, впервые показанный на CES 2026, готовится к глобальному запуску и делает ставку на необычный форм-фактор.  Устройство выполнено в круглом алюминиевом корпусе с аккуратной полировкой оттенка «морская раковина»…

Апр 9, 2026
Корея проведет пилотный проект по внедрению телемедицины на основе искусственного интеллекта в Индонезии.

Корея проведет пилотный проект по внедрению телемедицины на основе искусственного интеллекта в Индонезии.

Правительство Кореи также планирует расширить партнерство в области искусственного интеллекта в здравоохранении на Вьетнам и Таиланд. Телемедицина Фото: Мартин Барро/Getty Images Южная Корея и Индонезия проведут пилотный проект по внедрению услуг телеконсультаций на основе искусственного интеллекта в…

Апр 9, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых