Обработка данных

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


🔹 1. Обработка пропущенных значений

Пропущенные значения появляются из-за ошибок сбора или передачи данных. Основные подходы:

  • Удаление строк или столбцов с пропущенными значениями

  • Замена пропусков средним или медианой

  • Интерполяция или прогнозирование пропусков

 
import pandas as pd

df = pd.read_csv('file.csv')

# Удаление строк с пропущенными значениями
df = df.dropna()

# Заполнение пропусков средним значением
df = df.fillna(df.mean())

print(df.head())

🔹 2. Удаление дубликатов

Дубликаты могут искажать статистику и приводить к ошибочным выводам.

df = df.drop_duplicates()

🔹3. Обработка выбросов

Выбросы — это значения, которые резко отличаются от большинства данных.

Метод стандартного отклонения:

std = df['column'].std()
mean = df['column'].mean()
df = df[(df['column'] > mean - 3*std) & (df['column'] < mean + 3*std)]

Метод межквартильного размаха (IQR):

Q1, Q3 = df['column'].quantile([0.25, 0.75])
IQR = Q3 - Q1
df = df[(df['column'] >= Q1 - 1.5*IQR) & (df['column'] <= Q3 + 1.5*IQR)]

🔹 4. Преобразование форматов данных

Неправильные форматы (например, даты как текст) мешают анализу.

# Преобразование строки в число
df['price'] = pd.to_numeric(df['price'], errors='coerce')

# Преобразование даты в формат datetime
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')

🔹 5. Фильтрация и удаление ненужных данных

Удаляйте лишние столбцы и записи, чтобы упростить анализ.

# Удаление ненужных столбцов
df = df.drop(columns=['temp', 'extra_info'])

# Отбор строк по условию
df = df[df['sales'] > 100]

🔹 6. Проверка согласованности данных

После очистки важно убедиться, что данные логичны и не содержат ошибок.

# Проверка пропусков и дубликатов
print(df.isnull().sum())
print(df.duplicated().sum())

# Проверка диапазона значений
print(df[df['age'] < 0])  # возраст не может быть отрицательным

🧩 Итоги

Очистка данных — это фундамент надёжного анализа. Используя pandas, можно эффективно находить и устранять пропуски, ошибки, выбросы и дубликаты.
Хорошо подготовленные данные = корректные выводы и качественные модели.