Новое Распределяем каналы MAX по категориям и территориям. Читать новость

🔍 Первичный осмотр данных в Pandas



После загрузки данных в DataFrame важно убедиться, что файл отображается правильно (не съехали столбцы, правильный разделитель, верная кодировка). Стандартное превью — достаточно неудобное и затратное по ресурсам. Здесь опишу базовые практики.

☄️ Методы для быстрого анализа

df.head() # первые 5 строк
df.tail(3) # последние 3 строки
df.shape # размер (строки, столбцы)
df.info() # типы столбцов, количество не‑NaN, память
df.columns # имена колонок (фичей)


🚩 Заголовки / header

Важно правильно указать, где находятся заголовки. Говорим системе:

- header=0 (по умолчанию) — первая строка становится именами колонок
- header=None — в файле нет строки-заголовка (колонки получат имена 0,1,2...)
- header=1 — заголовки лежат во второй строке, первая — служебная/мусорная
- names=['a','b','c'] — передаём явно имена колонок
- skiprows=[0,2,5] — пропустить строки с номерами 0,2,5 (мусорные)
- skipfooter=2 — пропустить последние 2 строки (требует engine='python', потому что стандартный C-движок не умеет читать файл с конца):

pd.read_csv('file.csv', skipfooter=2, engine='python')

📊 Какие столбцы загружать

- usecols=['id','price'] — читать только указанные столбцы (экономит память)
- nrows=1000 — прочитать только первые 1000 строк (удобно для теста)

# Прочитай только столбцы 'id' и 'price'
pd.read_csv('file.csv', usecols=['id', 'price'])

# Только первые 1000 строк
pd.read_csv('file.csv', nrows=1000)

# Комбинация
pd.read_csv('file.csv', usecols=['id', 'price'], nrows=1000)


☝️ Проверка пропущенных значений (NaN)

NaN — «дырка» в данных, если не проверить:
- базовые агрегаты выдадут NaN
- модели машинного обучения выдадут ошибку
- графики могут исказиться

df.isna().sum() # сколько NaN в каждом столбце (часто используют вместе/вместо с info)
df.isna().sum().sum() # общее число NaN во всей таблице


🧷 Типы данных

Pandas различает только три основных типа:
- Числовые (int64, float64)
- Булевы (bool)
- Объекты (object) — строки, смешанные типы, даты*, списки и т.д.

*Для работы с датами лучше использовать datetime64, но при первичном осмотре они тоже попадут в object, если не преобразовать.

Типы столбцов можно задать сразу при чтении (через `dtype`) или поменять после (через `astype()`):
• dtype экономит память и время при загрузке больших файлов
• astype даёт гибкость при постобработке

# Задать типы столбцов сразу при чтении — ускоряет чтение
df = pd.read_csv('file.csv', dtype={'id': int, 'price': float})

# Посмотреть типы всех столбцов
df.dtypes

# Поменять тип после загрузки (пример)
df = pd.read_csv('file.csv')
df['price'] = df['price'].astype(float)


📦 Доступ к столбцу

Предпочтительно через квадратные скобки.

df['cost'] # ✅ работает всегда
df.cost # ⚠️ не работает с пробелами, спецсимволами, может совпасть с методом DataFrame


📊 Описательные статистики / descriptive statistics

Один из ключевых методов разведочного анализа данных (EDA).

1. Функция для числовых данных — describe():

- count – сколько непустых значений
- mean – среднее арифметическое
- std – стандартное отклонение (разброс данных)
- min – минимум
- 25%, 50%, 75% – квантили (границы, ниже которых лежат 25%, 50%, 75% данных)
- max – максимум

df.describe()

2. Для текстовых (категориальных) столбцов — include=['object']:

df.describe(include=['object'])

Покажет: количество уникальных значений, самую частую категорию (top), её частоту (freq).

9️⃣ Подсчёт частот значений / frequency counts

Применяется к одному столбцу (Series), считает, сколько раз встречается каждое значение.

df['channel'].value_counts() # абсолютные значения
# ya 99
# vk 1


`normalize=True` — доли (относительные частоты), помогает выявить дисбаланс данных:

df['channel'].value_counts(normalize=True) # доли
# ya 0.99
# vk 0.01


Если одна категория встречается гораздо чаще других, модель будет плохо предсказывать редкие классы.

💬 Далее:
Pandas. Меняем размер таблицы — добавляем и удаляем данные
Просмотры: 240
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти