1. История данных: загрузка и первичный осмотр
История данных: загрузка и первичный осмотр
Представьте: вы — аналитик в ритейл-компании, и утром вам приходит Excel-файл с продажами за квартал. 47 тысяч строк, 18 столбцов, и директор ждёт ответ на вопрос: «Почему в марте просели продажи в регионе Юг?» Прежде чем искать ответ, нужно понять, с чем вообще имеешь дело. Именно здесь начинается любая аналитическая работа — с загрузки и первичного осмотра данных.
Почему нельзя просто открыть файл и начать считать
В Excel вы привыкли видеть таблицу целиком. Но Pandas работает иначе: данные загружаются в специальную структуру — DataFrame, которая представляет собой двумерную таблицу с именованными столбцами и индексами строк. Это не просто «таблица в коде» — это объект с методами, которые позволяют мгновенно получать статистику, фильтровать, трансформировать данные без ручного перебора ячеек.
Загрузка данных — первый и критически важный шаг. Ошибки на этом этапе приводят к тому, что весь дальнейший анализ строится на неверных данных. Например, если при загрузке числовые столбцы распознаются как текст, все средние значения и суммы будут некорректными.
Загрузка данных: три основных источника
На практике данные приходят из разных источников, и Pandas умеет работать с каждым.
CSV-файлы — самый распространённый формат. Это простой текстовый файл, где значения разделены запятыми (или другими символами). Загрузка выполняется функцией pd.read_csv():
Но здесь кроется первая ловушка: кодировка. Если файл сохранён в Windows-кодировке cp1251, а вы загружаете его без указания кодировки, русские символы превратятся в «кракозябры». Решение — параметр encoding:
Excel-файлы загружаются через pd.read_excel(). Важный нюанс: в Excel-файле может быть несколько листов. Если не указать параметр sheet_name, Pandas загрузит первый лист:
Базы данных — третий источник. Через pd.read_sql() можно подключиться к PostgreSQL, MySQL, SQLite и другим СУБД, выполнив SQL-запрос и получив результат сразу в DataFrame:
Первичный осмотр: пять команд, которые расскажут всё
Допустим, файл загружен. Что делать дальше? Не открывать все 47 тысяч строк вручную — для этого существуют специальные методы.
head() и tail() — показывают первые или последние строки. По умолчанию — пять, но можно указать любое число:
Это как беглое знакомство с человеком: вы видите «лицо» данных — названия столбцов, формат значений, примеры записей.
shape — возвращает кортеж (количество строк, количество столбцов). Одной командой вы узнаёте масштаб задачи:
info() — самая информативная команда для первичного осмотра. Она показывает тип данных в каждом столбце, количество непустых значений и объём памяти:
Именно здесь вы обнаружите, что столбец revenue имеет тип object (текст) вместо float64 (число с плавающей точкой), а в столбце customer_id есть пропуски.
describe() — вычисляет описательную статистику для числовых столбцов: среднее, стандартное отклонение, минимум, максимум и квартили. Это быстрый способ увидеть аномалии:
Если в столбце quantity максимальное значение — 99 999 при среднем в 12 единиц, это повод проверить данные на выбросы.
dtypes — возвращает типы данных всех столбцов. Быстрый способ убедиться, что числа — это числа, даты — это даты, а категории — это категории:
Типы данных: почему это важно
Pandas автоматически определяет тип каждого столбца при загрузке, но делает это не всегда корректно. Вот основные типы, с которыми вы встретитесь:
| Тип данных | Обозначение | Пример |
|---|---|---|
| Целые числа | int64 | Количество товара |
| Числа с плавающей точкой | float64 | Цена, выручка |
| Текст | object | Название товара, город |
| Дата и время | datetime64 | Дата заказа |
| Категории | category | Статус заказа, регион |
Почему это критично? Потому что от типа зависит, какие операции доступны. С текстовым столбцом нельзя посчитать среднее. С датой нельзя работать как с текстом — не получится извлечь месяц или день недели. Если Pandas неправильно определил тип, вы можете исправить это вручную:
Индекс: невидимый каркас таблицы
Каждый DataFrame имеет индекс — это метки строк. По умолчанию Pandas создаёт числовой индекс от 0 до N-1. Но часто в данных есть столбец, который логичнее использовать как индекс — например, уникальный идентификатор заказа:
Индекс — это не просто нумерация. Он определяет, как Pandas обращается к строкам. Если вы позже будете объединять таблицы, правильный индекс сэкономит время и предотвратит ошибки.
Практический кейс: знакомство с датасетом продаж
Вернёмся к нашей задаче. После загрузки файла аналитик выполняет последовательность действий:
После этих пяти команд аналитик уже знает: в файле 47 231 запись, 18 столбцов, в трёх столбцах есть пропуски, столбец с датой загрузился как текст, а максимальная сумма заказа — 2,3 млн руб. при среднем в 4 700 руб. — явный выброс, который нужно исследовать.
> Загрузка и осмотр данных — это не формальность, а фундамент. Каждая минута, потраченная на понимание структуры данных в начале, экономит часы отладки в дальнейшем.
Теперь, когда мы знаем, как загружать данные и получать о них первое впечатление, пришло время научиться извлекать из них нужные фрагменты — фильтровать и отбирать именно те записи, которые отвечают на наш вопрос.