Очистка и подготовка данных в Pandas
Назначение
Краткая напоминалка по библиотеке pandas для этапа data cleaning — приведения сырой таблицы к виду, пригодному для описательной статистики, визуализации и моделей. Команды сгруппированы по типичному порядку работы: сначала осмотр, затем пропуски и дубликаты, правка столбцов, отбор строк, объединение и агрегация.
Предполагается, что DataFrame уже загружен (pd.read_csv и другие read_* — в типовых операциях Pandas и напоминалке по четырём инструментам). Разбор идей импутации и группировки подробнее — в главе про pandas и NumPy.
df — объект DataFrame, col — имя столбца, value — число или строка в условии. Для цепочки операций удобно писать df = df.dropna() или собирать шаги в одну цепочку с .pipe().
Пропуски, дубликаты и замена значений
| Задача | Команда | Комментарий |
|---|---|---|
| Счёт пропусков по столбцам | df.isnull().sum() | То же через df.isna().sum() |
| Удалить строки с пропусками | df.dropna() | subset=['col'] — только по выбранным столбцам; how='all' — строка целиком пустая |
| Заполнить вперёд по столбцу | df['col'].ffill() | Для всей таблицы: df.ffill(); раньше использовали fillna(method='ffill') — в pandas 2.x лучше ffill() |
| Заполнить константой или медианой | df['col'].fillna(0) | df.fillna({'col': df['col'].median()}) — разные правила по столбцам |
| Удалить дубликаты строк | df.drop_duplicates() | subset=['col'], `keep='first' |
| Заменить отдельные значения | df.replace({'old': 'new'}) | Для нескольких пар: df.replace({'a': 1, 'b': 2}) |
Перед массовым dropna() имеет смысл оценить долю потерь: иначе выборка станет нерепрезентативной. Заполнение пропусков — это гипотеза о данных; её стоит зафиксировать в ноутбуке или отчёте.
Осмотр и понимание таблицы
| Задача | Команда | Комментарий |
|---|---|---|
| Первые строки | df.head() | По умолчанию 5 строк; df.head(10) |
| Типы и число непустых значений | df.info() | Память, dtype, non-null по каждому столбцу |
| Сводная статистика по числам | df.describe() | Среднее, std, квантили; для категорий — df.describe(include='object') |
| Размер | df.shape | Кортеж (строки, столбцы) |
| Частоты категории | df['col'].value_counts() | normalize=True — доли, dropna=False — учесть пропуски |
Типичный старт после загрузки CSV: df.head(), df.info(), df.describe() — так быстро видно «грязные» имена столбцов, неверные типы и выбросы.
Имена столбцов, типы, удаление лишнего
| Задача | Команда | Комментарий |
|---|---|---|
| Переименовать столбцы | df.rename(columns={'old': 'new'}) | inplace=True меняет объект на месте (чаще предпочитают присваивание без inplace) |
| Привести типы | df.astype({'col': 'int64'}) | Даты: pd.to_datetime(df['col']); категории: df['col'].astype('category') |
| Удалить столбцы | df.drop(['col'], axis=1) | Несколько имён в списке; то же: columns=['col'] |
| Сбросить индекс строк | df.reset_index(drop=True) | drop=True не оставляет старый индекс отдельным столбцом |
| Убрать пробелы в названиях | df.columns = df.columns.str.strip() | Часто добавляют .str.lower() для единого стиля |
Если столбец с ID читается как число и теряет ведущие нули — задайте тип при загрузке: pd.read_csv(..., dtype={'id': str}).
Фильтрация и выбор строк
| Задача | Команда | Комментарий |
|---|---|---|
| Условие по столбцу | df.loc[df['col'] > value] | Для равенства строк: df.loc[df['col'] == 'yes'] |
| Срез по позиции строк | df.iloc[0:5] | iloc — по номеру строки/столбца, без учёта меток индекса |
| Значение из списка | df[df['col'].isin(['val1', 'val2'])] | Удобно для кодов статусов и регионов |
| Выражение-строка | df.query('col > 10 and col2 == "yes"') | Имена столбцов с пробелами — в обратных кавычках |
При нескольких условиях в квадратных скобках используйте &, |, ~ и скобки: df[(df['a'] > 0) & (df['b'] == 'x')]. Подробнее про булевы маски — в разделе про фильтрацию.
Объединение таблиц и агрегация
| Задача | Команда | Комментарий |
|---|---|---|
| Сложить строки (одинаковые столбцы) | pd.concat([df1, df2], axis=0) | ignore_index=True — новая нумерация строк |
| Соединить по ключу | pd.merge(df1, df2, on='key') | `how='left' |
| Группировка и агрегат | df.groupby('col').agg({'val': 'mean'}) | Несколько функций: .agg({'val': ['mean', 'sum']}) |
| Частоты значений | df['col'].value_counts() | Дублирует осмотр, но удобно перед отбором редких категорий |
Сравнение merge, concat и groupby с Polars, SQL и PySpark — 426. Своды и pivot — объединение таблиц в Pandas.
Мини-пайплайн перед аналитикой
Пример последовательности в ноутбуке (имена столбцов замените на свои):
import pandas as pd
df = pd.read_csv("data.csv")
df.columns = df.columns.str.strip()
print(df.isnull().sum())
print(df.describe())
df = df.drop_duplicates()
df = df.dropna(subset=["id", "date"])
df["amount"] = pd.to_numeric(df["amount"], errors="coerce")
summary = df.groupby("region")["amount"].agg(["mean", "count"])
Дальше — визуализация (df.plot, Seaborn) и модели (scikit-learn); см. Python для анализа и практический маршрут.
См. также
- Pandas — типовые операции при анализе данных — статистика, строки, временные ряды, экспорт
- Табличные данные — Pandas, Polars, SQL и PySpark — одна операция в четырёх синтаксисах
- Анализ данных — pandas, NumPy, SciPy — структуры
Series/DataFrame, импутация,groupby - Python для анализа данных — экосистема библиотек
- Глоссарий: Pandas
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). Интерпретация данных представляет собой процесс перевода количественных результатов анализа в качественное понимание явлений и процессов. Big Data — это относительное состояние, при котором объём данных превышает возможности традиционных систем хранения и обработки с точки зрения производительности, стоимости или масштабируемости. Data Science - междисциплинарный подход к извлечению знаний из данных через статистику, моделирование и предметную экспертизу. Дата-майнинг и KDD - связь с полным циклом от постановки задачи до интерпретации найденных закономерностей в данных. Критическое мышление в анализе. Фиксация на цифрах и ложь в статистике. Интегрированная система управления инженерными и бытовыми компонентами жилого пространства, построенная на принципах автоматизации. Поддержка физической активности, повышение эффективности тренировок, контроль состояния организма. Базовые показатели. Как работать с представлениями данных. ИИ в анализе данных - автоматизация поиска закономерностей и поддержка решений с помощью машинного обучения и нейросетевых моделей. Причинно-следственные связи в анализе - как действия и условия порождают измеримые результаты и выводы. Потоковая аналитика в реальном времени - обработка событий по мере поступления и извлечение сигналов без обязательного долгого хранения сырых данных. Описательная статистика служит для краткого обобщения свойств набора данных. Она позволяет понять центральную тенденцию, разброс и форму распределения.Анализ данных
Big Data
Data Science
Дата майнинг
Ошибки интерпретации и манипуляции статистикой
Умный дом
Технологии в спорте
Основы статистики
Как использовать ИИ для анализа данных
Причинно-следственный анализ
Потоковая аналитика в реальном времени
Python для анализа данных