Очистка данных в Pandas: пропуски, дубли, типы

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

pandasочистка данныхпропуски

Грязные данные ломают аналитику, модели и отчёты. В Pandas базовая очистка почти всегда сводится к 3 задачам: обработать пропуски, убрать дубли и привести типы данных. Ниже — практический мини-туториал, который закрывает самые частые поисковые вопросы по теме. ⚙️

  1. 1. Загружаем и быстро смотрим датафрейм

    import pandas as pd
    
    df = pd.read_csv("data.csv")
    print(df.head())
    print(df.info())
    print(df.isna().sum())

    info() покажет типы столбцов, а isna().sum() — где и сколько пропусков.

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

    Пропуски могут быть в виде NaN, пустых строк, None, "unknown" и других маркеров.

    df = df.replace(["", "unknown", "N/A"], pd.NA)

    Удалить строки с пропусками:

    df = df.dropna()

    Удалить только если пропуск в критичных столбцах:

    df = df.dropna(subset=["email", "price"])

    Заполнить пропуски:

    df["age"] = df["age"].fillna(df["age"].median())
    df["city"] = df["city"].fillna("Неизвестно")

    Совет:

    • для чисел чаще используют median() или mean()
    • для категорий — фиксированное значение или mode()
  3. 3. Удаление дублей

    Полные и частичные дубли искажают статистику и метрики. 📉

    print(df.duplicated().sum())   # сколько полных дублей
    df = df.drop_duplicates()

    Удалить дубли по ключу, например по email:

    df = df.drop_duplicates(subset=["email"])

    Оставить последнюю запись:

    df = df.drop_duplicates(subset=["user_id"], keep="last")
  4. 4. Приведение типов данных

    Одна из самых частых проблем — числа и даты загружаются как строки.

    Числа:

    df["price"] = pd.to_numeric(df["price"], errors="coerce")

    Если встретится мусорное значение, оно превратится в NaN.

    Даты:

    df["date"] = pd.to_datetime(df["date"], errors="coerce")

    Категории:

    df["status"] = df["status"].astype("category")

    Это экономит память и ускоряет обработку.

  5. 5. Финальная проверка

    print(df.info())
    print(df.isna().sum())
    print(df.describe(include="all"))

Мини-чеклист очистки данных

  • ✅ проверить info()
  • ✅ найти пропуски
  • ✅ заменить скрытые маркеры пустых значений
  • ✅ удалить или заполнить NaN
  • ✅ убрать дубли
  • ✅ привести типы: to_numeric(), to_datetime()
  • ✅ перепроверить результат

Главная мысль: очищать данные нужно не “по шаблону”, а по смыслу столбца и бизнес-задаче. Для финансовых данных удаление строки может быть критично, а для маркетинговых — допустимо. 🧠

Подборка каналов про IT — хороший способ держать под рукой полезные разборы по Pandas, Python, аналитике и автоматизации. 📚

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

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