Грязные данные ломают аналитику, модели и отчёты. В Pandas базовая очистка почти всегда сводится к 3 задачам: обработать пропуски, убрать дубли и привести типы данных. Ниже — практический мини-туториал, который закрывает самые частые поисковые вопросы по теме. ⚙️
-
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. Работа с пропусками
Пропуски могут быть в виде
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. Удаление дублей
Полные и частичные дубли искажают статистику и метрики. 📉
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. Приведение типов данных
Одна из самых частых проблем — числа и даты загружаются как строки.
Числа:
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. Финальная проверка
print(df.info()) print(df.isna().sum()) print(df.describe(include="all"))
Мини-чеклист очистки данных
- ✅ проверить
info() - ✅ найти пропуски
- ✅ заменить скрытые маркеры пустых значений
- ✅ удалить или заполнить
NaN - ✅ убрать дубли
- ✅ привести типы:
to_numeric(),to_datetime() - ✅ перепроверить результат
Главная мысль: очищать данные нужно не “по шаблону”, а по смыслу столбца и бизнес-задаче. Для финансовых данных удаление строки может быть критично, а для маркетинговых — допустимо. 🧠
Подборка каналов про IT — хороший способ держать под рукой полезные разборы по Pandas, Python, аналитике и автоматизации. 📚