TGViewer
Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение @dsproglib · 18.3K subscribers
Post #7559 1.45K
Чистка CSV-файлов с pandas: полный чеклист

Вот практический пайплайн который можно переиспользовать в любом проекте.


🔍 1. Инспекция до чистки


print(df.shape)
print(df.dtypes)
print(df.duplicated().sum())
df.isna().sum()


Сначала смотрим, потом чистим.

📋 2. Имена колонок


df.columns = (
df.columns
.str.strip()
.str.lower()
.str.replace(r"\s+", "_", regex=True)
)


🔲 3. Пустые строки и плейсхолдеры → NaN


df = df.replace(r"^\s*$", pd.NA, regex=True)
df = df.replace(["N/A", "n/a", "unknown", "not a date"], pd.NA)


🔤 4. Текстовые колонки


df["full_name"] = df["full_name"].str.strip().str.title()
df["email_address"] = df["email_address"].str.lower()
df["membership"] = df["membership"].str.lower()


5. Валидация категорий


allowed = {"bronze", "silver", "gold"}
df.loc[~df["membership"].isin(allowed), "membership"] = pd.NA


🔢 6. Числа и даты


df["age"] = pd.to_numeric(df["age"], errors="coerce")
df.loc[~df["age"].between(0, 120), "age"] = pd.NA

df["join_date"] = pd.to_datetime(df["join_date"], format="mixed", errors="coerce")

df["total_spend"] = (
df["total_spend"].astype("string")
.str.replace(r"[^0-9.-]", "", regex=True)
)
df["total_spend"] = pd.to_numeric(df["total_spend"], errors="coerce")


📧 7. Валидация email


pattern = r"^[^\s@]+@[^\s@]+\.[^\s@]+$"
df.loc[~df["email_address"].str.match(pattern, na=False), "email_address"] = pd.NA


🧩 8. Обработка пропусков


df = df.dropna(subset=["customer_id"]) # обязательное поле
df["age"] = df["age"].fillna(df["age"].median())
df["membership"] = df["membership"].fillna("unassigned")


🛡 9. Финальная валидация через assert


assert df["customer_id"].notna().all()
assert df["customer_id"].is_unique
assert df["age"].between(0, 120).all()
assert df["total_spend"].ge(0).all()


Если все проверки прошли — данные готовы к анализу.


📍 Навигация: ВакансииЗадачиСобесы

Библиотека дата-сайентиста

#буст
  • 🔥 8
  • 👍 3
More from @dsproglib
  1. Sep 21, 2026🎲 Что общего у кубика Рубика и AI? Поиск по пространству состояний Кубик Рубика можно пре…
  2. Sep 20, 2026Что выведет код? 👍 — {} 👾 — {«x»: 1} 🥰 — Error 🔥 — None 🐸 Библиотека задач по Data Sc…
  3. Sep 19, 2026🌞 3 open-source инструмента для AI-агентов 🔘 Agent-Reach — доступ к Twitter/X, YouTube,…
  4. Sep 18, 2026А вы уже забрали свой подарок ко Дню программиста? К вашему профессиональному празднику Tp…
  5. Sep 18, 2026📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека дата-сайентиста
  6. Sep 17, 2026🤗 Fine-tuning LLM в Google Colab — без собственной GPU Unsloth Studio позволяет попробова…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →