Pandas: что нужно знать для старта
Если вы начинаете работать с данными в Python, то рано или поздно столкнетесь с библиотекой pandas. Это один из тех инструментов, без которого сегодня не обходится ни один аналитик, дата-сайентист или разработчик, который работает с табличными данными. И на то есть свои причины.
В этой статье разбираем, что такое pandas, зачем она нужна и с чего начать.
Что такое pandas
pandas — это библиотека для языка программирования Python, которая создана специально для работы с данными в табличном виде. Когда вы видите данные в Excel, в CSV-файле или в базе данных — перед вами как раз тот случай, когда pandas может пригодиться.
Название происходит от английского Panel Data — термин из статистики, который обозначает структурированные, табличные данные. Именно с такими данными работает pandas: не с хаотичными наборами значений, а с тем, что похоже на таблицы Excel или базы данных. В отличие от сырых и неструктурированных данных, их проще анализировать, фильтровать и обрабатывать.
В основе pandas лежит другая популярная библиотека — NumPy, которая занимается математикой и массивами. Но если NumPy работает с числами и матрицами, то pandas уже умеет обращаться с более сложными структурами — таблицами с разными типами данных, названиями столбцов и строк, фильтрами, пропущенными значениями и прочими вещами, без которых анализ данных становится головной болью.
Для чего нужна библиотека pandas
Основная причина, по которой аналитики данных и дата-сайентисты используют pandas, — это необходимость быстро и удобно приводить данные к нужному виду. Например, чаще всего исходные данные представлены в виде таблиц Excel, CSV-файлов или баз данных, и в таком виде они обычно не подходят для применения методов машинного обучения и глубокой аналитики. Их нужно предварительно очистить, отфильтровать и структурировать. Все это можно легко сделать с помощью pandas.
Кроме того, pandas автоматизирует рутинные задачи по работе с данными. Вместо того чтобы вручную искать дубликаты строк или заполнять пропущенные значения, вы можете выполнить эти действия буквально парой команд. Это экономит массу времени и позволяет сосредоточиться на решении самой задачи, а не на предварительной подготовке данных.
Возможности библиотеки pandas
Библиотека pandas создавалась как инструмент для работы с табличными данными — и именно в этом направлении она раскрывает весь свой потенциал. С ее помощью можно выполнять полный цикл обработки данных. Работа с данными становится проще, быстрее и нагляднее: задачи, которые раньше занимали часы, теперь решаются несколькими строками кода:
Загрузка и сохранение данных
pandas умеет работать с большинством популярных форматов. Благодаря этому вы можете загружать данные практически из любого источника: CSV-файлы, Excel-таблицы, базы данных SQL, файлы JSON, HTML-страницы и даже удаленные API. Аналитик может начать работу с данными буквально в одну строчку кода — достаточно указать путь к файлу.
Также pandas позволяет легко сохранять обработанные таблицы в нужном формате. Например, результат можно выгрузить обратно в Excel, сохранить в CSV или передать в базу данных. Это особенно удобно при построении автоматизированных пайплайнов, где важно не только обработать данные, но и сохранить результат для дальнейшего использования.
Обработка и очистка данных
В реальных проектах данные редко бывают идеальными. В таблицах могут встречаться пустые значения, дублирующиеся строки, некорректные типы данных или выбросы. pandas предлагает десятки инструментов для очистки таких данных.
Например, можно легко удалить дубликаты, найти и заполнить пропущенные значения, изменить типы столбцов (например, преобразовать строку в дату), отфильтровать строки по заданному условию, отсортировать таблицу или переименовать столбцы.
Кроме того, можно выделять или удалять строки и столбцы, заменять значения по маске, применять собственные функции к каждой ячейке или группе значений. Все это позволяет подготовить данные к анализу или обучению моделей машинного обучения.
Анализ и преобразование
После очистки наступает этап анализа. pandas позволяет быстро получить общее представление о структуре данных: какие значения встречаются чаще всего, сколько уникальных значений в каждом столбце и как распределены числовые переменные. Первичный анализ важен для понимания того, с чем предстоит работать дальше.
Библиотека также поддерживает множество операций по преобразованию данных. Например, можно сгруппировать таблицу по нужному признаку и для каждой группы вычислить среднее значение или сумму. Поэтому pandas крайне полезна в маркетинговой или продуктовой аналитике, где часто нужно получить статистику по регионам, сегментам пользователей или временным периодам.
С помощью методов объединения таблиц можно склеить несколько наборов данных — по ключу, как в SQL, или по индексу. Это позволяет легко расширять таблицы дополнительной информацией: например, добавлять пользовательские атрибуты или результаты предыдущих анализов.
Объединение и слияние таблиц
Когда данных много, они часто хранятся в разных таблицах. pandas может объединять такие таблицы по ключам, индексам или столбцам. Для этого есть функции merge(), join() и concat(). Они аналогичны объединениям в SQL и позволяют собирать полную картину из разрозненных источников.
Можно выполнять как горизонтальные объединения (добавление строк), так и вертикальные (добавление столбцов), с сохранением всех нужных данных и обработкой несовпадающих значений.
Работа со временем
pandas хорошо справляется с временными рядами — данными, в которых важна последовательность и частота наблюдений. Библиотека позволяет преобразовывать строки в формат даты и времени, извлекать год, месяц, день, день недели, а также выполнять более сложные операции — например, группировку по неделям или кварталам, создание скользящих окон и ресемплирование — перевод данных с одного временного масштаба на другой, например, с дневного на недельный.
Временные ряды особенно полезны для анализа показателей, которые меняются во времени: трафика сайта, продаж, температуры и финансовых метрик.
Подготовка к визуализации и моделированию
Хотя сама библиотека не предназначена для сложной визуализации, она отлично интегрируется с другими инструментами — например, с matplotlib и seaborn. С ней можно быстро построить график на основе таблицы: от простой линии до диаграммы рассеяния. Благодаря этому pandas часто используют для подготовки данных к визуализации, оставляя более сложную графику другим библиотекам.
Кроме того, pandas активно применяется в Data Science. Прежде чем загрузить данные в модель машинного обучения, их необходимо привести к нужному виду: закодировать категориальные переменные, нормализовать значения и удалить выбросы. Библиотека предоставляет все необходимые инструменты для такой подготовки. В связке с NumPy и scikit-learn она становится частью полноценного пайплайна обучения моделей.
Как pandas хранит данные
Когда работаешь с pandas, важно понимать, как эта библиотека организует информацию внутри себя. Все сводится к двум главным структурам данных: Series и DataFrame. На них держится вся работа с таблицами и аналитикой.
Series
Series — это упрощенная структура, по сути, обычный список значений с подписями. Внутри — одномерный массив данных; у каждого элемента есть индекс. Если вы не зададите индекс вручную, он создастся сам — начиная с 0, как в обычных списках Python. Вы можете сделать индексом, например, имена, даты или коды — что угодно.
В отличие от обычного списка в Python, Series поддерживает не только числовые, но и строковые индексы, а также умеет работать с датами и смешанными типами данных.
Например, у вас есть данные о расходах по категориям за месяц. Их можно представить как Series:
import pandas as pd
expenses = pd.Series([22000, 8000, 4500], index=['Аренда', 'Продукты', 'Транспорт'])
В выводе будет:
Аренда 22000
Продукты 8000
Транспорт 4500
dtype: int64
Такой массив удобно использовать, если вы работаете только с одним столбцом данных: к примеру, ценами на товар, именами клиентов или результатами измерений. По индексу можно обратиться к нужному значению, заменить его или отфильтровать только те элементы, которые соответствуют условию.
Важно! Series — это фиксированная структура: напрямую добавить или удалить элементы после создания нельзя. Но можно создать новый объект, отфильтровав или изменив существующий.
DataFrame
DataFrame — это более универсальная структура. Она двумерная, то есть выглядит и работает как таблица: в ней есть строки, столбцы и значения в ячейках. Каждый столбец внутри DataFrame — это отдельный объект Series.
Если говорить простыми словами, то DataFrame — это набор Series, которые объединены по строкам в единую таблицу.
У строк и столбцов тоже есть индексы. По умолчанию pandas создает числовые индексы (0, 1, 2…), но можно задать и собственные: в качестве строк — даты, а в качестве столбцов — названия параметров (например, «Температура», «Влажность», «Ветер»).
data = {
'Температура': [22.5, 21.0, 19.8],
'Влажность': [60, 65, 70],
'Ветер (м/с)': [5.2, 3.8, 4.1]
}
index = ['2023-06-01', '2023-06-02', '2023-06-03']
weather = pd.DataFrame(data, index=index)
Результат:
Температура Влажность Ветер (м/с)
2025-03-01 22.5 60 5.2
2025-03-02 21.0 65 3.8
2025-03-03 19.8 70 4.1
В таком формате можно сразу заметить тренды: например, как изменялась температура или усиливался ветер. Также легко отфильтровать дни, когда температура опускалась ниже 21 градуса, или рассчитать средние показатели по каждому параметру.
Если вы привыкли работать с таблицами в Excel или Google Sheets, DataFrame покажется знакомым: те же ячейки, заголовки столбцов, строки с индексами. Но в отличие от табличных редакторов, здесь вы получаете полный контроль над структурой и можете делать все, что угодно. DataFrame позволяет не только хранить данные, но и гибко с ними работать:
- обращаться к строкам и столбцам по имени или индексу;
- фильтровать строки по условиям;
- переименовывать столбцы и менять индексы;
- объединять несколько таблиц в одну;
- преобразовывать данные и выполнять агрегирующие операции.
DataFrame стоит использовать, когда вы работаете с реальными данными — клиентскими базами, транзакциями, логами или результатами экспериментов. Каждую строку можно воспринимать как отдельную запись, а каждый столбец — как характеристику.
Как установить pandas
Чтобы начать работать с библиотекой pandas, ее нужно установить в свою среду разработки. Установка занимает всего пару минут и выполняется через стандартный менеджер пакетов Python — pip.
Если у вас уже установлен Python, откройте терминал (или командную строку) и введите команду:
pip install pandas
Она загрузит последнюю стабильную версию pandas из официального репозитория PyPI. Установка обычно проходит быстро, вместе с библиотекой подтянутся и ее зависимости, включая NumPy.
Если вы работаете в Jupyter Notebook, команду можно выполнить прямо в ячейке, добавив перед ней восклицательный знак:
!pip install pandas
Если вы используете дистрибутив Anaconda, то pandas уже включена в базовую поставку. Ничего дополнительно устанавливать не нужно — можно сразу импортировать и использовать библиотеку.
Если по какой-то причине pandas не оказалось в вашей среде, установите ее через conda:
conda install pandas
После установки можно проверить, что все прошло успешно. Для этого запустите Python и попробуйте импортировать pandas:
import pandas as pd
print(pd.__version__)
Если ошибок не возникло, значит все готово — можно переходить к работе с данными.
Начало работы с pandas
Прежде чем анализировать данные в pandas, их нужно загрузить в рабочее пространство. Чаще всего это таблицы, которые хранятся в виде CSV-файлов, Excel-документов или выгружаются из баз данных. Для каждого типа файла в pandas предусмотрена своя функция загрузки, начинающаяся с read_.
Например, для CSV-файлов используется read_csv. Если у вас есть файл names.csv, загрузить его можно так:
import pandas as pd
df = pd.read_csv('names.csv', sep=',')
Она создаст переменную df, в которой будет храниться таблица в виде структуры DataFrame. Аргумент sep=',' указывает, чем разделены столбцы в исходном файле — в нашем случае запятой. Это стандарт для CSV, но иногда встречаются и другие символы, например табуляция (\t) или точка с запятой (;), и тогда нужно подставить соответствующий разделитель.
После загрузки таблицы вы можете начать с базового знакомства с данными. Несколько полезных методов, которые помогут быстро сориентироваться:
- df.head() — выводит первые 5 строк таблицы. Удобно, чтобы сразу увидеть структуру.
- df.tail() — показывает последние 5 строк. Полезно, если хотите проверить конец файла или узнать, как загружаются новые данные.
- df.shape — возвращает кортеж (строки, столбцы), то есть размер таблицы. Например: (1000, 5) — 1000 строк и 5 столбцов.
- df.rename(columns={'Старое': 'Новое'}) — переименовывает столбцы. Используйте его, если их названия некорректные, слишком длинные или на другом языке.
- df.describe() — дает сводную статистику по числовым столбцам: среднее значение, минимумы, максимумы, стандартное отклонение и квартильные значения. Часто используется для первичного анализа данных.
- display(df) — в Jupyter Notebook позволяет отобразить таблицу целиком с красивым форматированием. Если вы работаете в интерактивной среде — это удобнее, чем print(df).
Эти методы помогают быстро понять, с каким набором данных вы работаете.
Работа со строками и столбцами в pandas
После того, как вы выгрузите данные в pandas, первое, что нужно научиться делать — это работать с отдельными строками и столбцами. Библиотека предоставляет удобные методы для того, чтобы быстро выбрать нужную информацию, изменить ее или полностью перестроить таблицу под свои задачи.
Разберем несколько типовых операций.
Очистка данных перед анализом
Перед тем, как использовать данные для серьезного анализа или обучения моделей, их нужно очистить. pandas предоставляет простые инструменты для этого:
- .drop_duplicates() удаляет повторяющиеся строки.
- .fillna() заменяет пропуски значений на указанные значения (например, на ноль или среднее).
- .dropna() полностью удаляет строки или столбцы с пропущенными значениями.
Например, если вы хотите заменить пустые ячейки в столбце с автором на значение «Неизвестен», выполните:
df['Автор'] = df['Автор'].fillna('Неизвестен')
Теперь ваша таблица готова к дальнейшему анализу и работе.
Извлечение нужных столбцов и строк
Один из самых частых сценариев — выделить несколько столбцов из большой таблицы. Допустим, у нас есть таблица с информацией о книгах в библиотеке: автор, название, год издания, количество страниц, жанр, рейтинг. Чтобы выбрать только столбцы «Автор» и «Название», достаточно одной команды:
df[['Автор', 'Название']]
В результате получится новый DataFrame, где останутся только эти два столбца. Исходная таблица при этом не изменится.
Если нужно извлечь сразу диапазон столбцов, а не перечислять их вручную, пригодится метод loc. Например, чтобы выбрать все столбцы от «Год издания» до «Рейтинг» (в том порядке, в каком они идут в таблице):
df.loc[:, 'Год издания':'Рейтинг']
Аналогично можно делать срезы по строкам — например, получить первые 100 записей о книгах и только первые 3 столбца:
df.iloc[0:100, 0:3]
Преобразование столбца в список
Иногда нужно извлечь из таблицы конкретный столбец и использовать его отдельно, например, в цикле или в другом расчете. Это легко сделать с помощью метода .tolist():
df['Автор'].tolist()
Переменная 'Автор' станет обычным Python-списком, с которым удобно работать.
Добавление и удаление данных
pandas позволяет не только смотреть данные, но и изменять таблицу — добавлять новые строки и столбцы. Предположим, вы хотите расширить таблицу, добавив новый столбец «Статус»: например, чтобы указать, выдана книга читателю или нет:
df['Статус'] = ['На полке', 'Выдана', 'На полке', 'Выдана']
Если значений меньше, чем строк в таблице, pandas сообщит об ошибке — столбец должен быть такой же длины, как и сам DataFrame.
Добавление новой строки — например, еще одной книги — потребует чуть больше действий. Сначала нужно создать словарь, где ключи — это названия столбцов, а значения — соответствующие данные. Затем этот словарь необходимо превратить в строку таблицы с помощью pd.DataFrame и объединить с основным фреймом:
new_book = {
'Автор': 'Харуки Мураками',
'Название': 'Норвежский лес',
'Год издания': 1987,
'Страницы': 296,
'Жанр': 'Роман',
'Рейтинг': 4.5,
'Статус': 'На полке'
}
df = pd.concat([df, pd.DataFrame([new_book])], ignore_index=True)
Если вы не укажете значения для некоторых столбцов, pandas заполнит их NaN — это специальное обозначение пустоты, которое можно позже заменить или удалить.
Чтобы удалить столбец, например, «Статус», используйте:
df.drop('Статус', axis=1, inplace=True)
Удаление строк выполняется схожим образом, но с указанием индексов или условий. Например, удалить первую строку можно так:
df.drop(index=0, inplace=True)
Если вы хотите убрать все записи о книгах, где рейтинг ниже 3, это можно сделать через фильтрацию:
df = df[df['Рейтинг'] >= 3]
Группировка и агрегация данных
Часто нужно понять, как распределяются данные внутри таблицы. Например, сколько книг каждого жанра есть в библиотеке. Для этого используется метод groupby():
df.groupby('Жанр').count()
Можно также сразу указать, какой параметр нас интересует, например, среднее число страниц в книгах разных жанров:
df.groupby('Жанр')['Страницы'].mean()
Метод помогает быстро найти закономерности: какие жанры читают чаще, где книги короче, а где длиннее.
Сводные таблицы
Сводные таблицы полезны, когда нужно получить обобщенную информацию. Например, вы хотите посмотреть средний рейтинг книг по каждому жанру и году издания:
pd.pivot_table(df, index='Год издания', columns='Жанр', values='Рейтинг', aggfunc='mean')
На выходе получится новая таблица, где по строкам — годы, по столбцам — жанры, а в ячейках — средний рейтинг. Там, где данных нет, будет стоять NaN.
Сортировка данных
Чтобы отсортировать книги по убыванию рейтинга, используйте:
df.sort_values(by='Рейтинг', ascending=False)
Можно отсортировать по нескольким столбцам — например, сначала по году, потом по рейтингу:
df.sort_values(by=['Год издания', 'Рейтинг'], ascending=[True, False])
Сортировка также будет полезна, если вы хотите посмотреть, какие книги были самыми популярными в конкретный период.
Заключение
Освоение pandas — это важный шаг для любого, кто работает с данными. Библиотека помогает быстро загружать таблицы, обрабатывать их, группировать, сортировать и анализировать без лишней рутины. На старте достаточно разобраться с базовыми структурами — Series и DataFrame, научиться делать срезы, добавлять и удалять строки и столбцы, очищать таблицу и строить простую аналитику.
Дальше все зависит от задач. pandas позволяет двигаться в сторону визуализации, статистики, машинного обучения или просто удобной автоматизации работы с данными.
Начните с простого: попробуйте открыть CSV-файл, посмотреть на его содержимое, выделить нужные столбцы, посчитать среднее значение и сгруппировать по какому-нибудь признаку. Чем больше практики, тем быстрее pandas перестанет казаться сложной — она отлично подходит для обучения через практику.
Перейти на оригинал