Медиаблог /

Что такое pandas в Python: библиотека для анализа данных с примерами

22 июля 2026

Что такое pandas в Python: библиотека для анализа данных с примерами

Pandas — Python-библиотека для работы с табличными данными, которую в 2008 году создал Уэс Маккинни (Wes McKinney). Название расшифровывается как PANel DAta — «панельные данные». Стандартный псевдоним при импорте — pd: import pandas as pd.

Библиотека pandas Python для анализа структурированных табличных данных

Если Excel — это калькулятор, то pandas — Excel на максималках: без зависаний, для миллионов строк, с возможностью записать весь пайплайн обработки как воспроизводимый скрипт. Библиотека умеет загружать CSV и Excel, фильтровать строки, группировать данные, очищать пропуски и передавать результаты в модели машинного обучения — за несколько строк кода вместо часов ручной работы.

image

Учитесь бесплатно за счёт государства

Экономия до 100 000 ₽ на любой программе

Выбрать курс

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

Что такое pandas и зачем она нужна

Pandas — открытая Python-библиотека для анализа и обработки структурированных данных, распространяемая по лицензии BSD-3-Clause. Построена поверх NumPy — высокопроизводительной библиотеки для работы с массивами на языке C. Именно это обеспечивает pandas скорость при работе с большими объёмами данных.

Уэс Маккинни разработал её в 2008 году, работая в хедж-фонде: нужен был инструмент для анализа финансовых временных рядов, которого в Python тогда не существовало. Сегодня pandas входит в стандартный стек специалиста по данным.

Основные сферы применения:

  • Разведочный анализ данных (EDA, Exploratory Data Analysis) — изучение наборов данных перед моделированием.
  • Предобработка данных для машинного обучения (Machine Learning) — очистка, кодирование, нормализация признаков.
  • Пайплайны извлечения, преобразования и загрузки данных (ETL, Extract-Transform-Load) — автоматизация переноса данных между системами.
  • Финансовый анализ — работа с временными рядами, котировками, балансами.

Библиотека pandas закрывает большинство задач аналитика данных без подключения к базам данных или специализированного программного обеспечения.

Сравнение с Excel и SQL: когда нужна pandas

Критерий
Excel
SQL
pandas
Лимит строк ~1 млн Без ограничений (СУБД) Без ограничений (RAM)
Автоматизация через код
Интеграция с ML
Нужна СУБД
Воспроизводимый пайплайн Частично

Вывод прост: pandas объединяет возможности Excel и SQL в одном инструменте — без необходимости поднимать базу данных и без ограничений по количеству строк.

Установка pandas: три способа начать работу

Есть три пути подключить pandas к проекту: через менеджер пакетов pip, через дистрибутив Anaconda или в облаке через Google Colab. Выбор зависит от ситуации: новый проект — pip; готовая среда для анализа данных — Anaconda; быстрый старт без настройки — Colab.

Дерево решений для выбора способа установки pandas в Python

Установка через pip и первый импорт

Для нового проекта — стандартный путь через pip:

pip install pandas

pip install matplotlib openpyxl

matplotlib потребуется для визуализации, openpyxl — для чтения Excel-файлов. После установки подключайте библиотеку одной строкой:

import pandas as pd

Псевдоним pd — неписаный стандарт Python-сообщества. Вы встретите его в документации, на Stack Overflow и в учебниках. Использовать другой псевдоним технически можно, но незачем: это усложнит чтение чужого кода и поиск ответов в интернете.

Anaconda и Google Colab — без ручной настройки

Anaconda — дистрибутив Python для анализа данных: pandas, NumPy и Jupyter Notebook уже включены, дополнительно устанавливать ничего не нужно. В составе Anaconda — более 250 готовых пакетов.

Google Colab — облачная среда в браузере. Pandas предустановлена, видеокарта (GPU) доступна без оплаты. Достаточно открыть новый блокнот и сразу написать import pandas as pd — работать можно немедленно. Это лучший выбор для быстрого старта и учёбы без настройки окружения.

Структуры данных pandas: Series и DataFrame

Архитектура DataFrame в pandas — колонки как Series с индексом строк

Pandas предоставляет две ключевые структуры данных: Series — одномерный массив с индексом, и DataFrame — двумерная таблица. Каждый столбец DataFrame является объектом Series. Всё остальное в pandas — операции над этими двумя структурами.

Series — одномерный массив с индексом

Series — это одна колонка данных с именованным индексом. Создаётся из списка, словаря или массива NumPy:

# Из списка

s = pd.Series([85000, 120000, 70000], name=’Зарплата’)

# Из словаря — ключи становятся индексом

s = pd.Series({‘Алексей’: 85000, ‘Мария’: 120000, ‘Игорь’: 70000})

По умолчанию индекс — числовой (RangeIndex: 0, 1, 2…). Можно задать строки, даты или любые метки. Если при создании из словаря передать явный индекс с ключами, которых нет в словаре, на этих позициях появится NaN — специальный маркер пропущенного значения по стандарту IEEE 754, который распространяется при арифметике (любое выражение с NaN возвращает NaN).

Ключевые атрибуты Series: .name (имя), .index (индекс), .dtype (тип данных), .values (массив NumPy). Series — подкласс массива NumPy, поэтому с ней работают все операции NumPy.

DataFrame — двумерная таблица данных

DataFrame — это таблица, где строки адресуются через индекс, а столбцы — через имена. Аналог: лист Excel или таблица в реляционной базе данных. Создаётся из словаря списков:

df = pd.DataFrame({

‘Имя’: [‘Алексей’, ‘Мария’, ‘Игорь’],

‘Роль’: [‘Data Analyst’, ‘ML Engineer’, ‘Data Analyst’],

‘Зарплата’: [85000, 130000, 90000]

})

Три составляющие DataFrame: данные, имена столбцов (горизонтальный адрес) и индекс строк (вертикальный адрес). Удобная мнемоника — «морской бой»: чтобы найти ячейку, нужно указать ряд × колонку.

Типы данных в столбцах: int64, float64, object (текст), datetime64. Один DataFrame может содержать столбцы разных типов одновременно.

Загрузка и сохранение данных

В реальных задачах данные не создают вручную — их загружают из файлов. Pandas поддерживает форматы CSV, Excel, JSON, SQL, Parquet, HTML. Паттерн один: функции read_* для загрузки, методы to_* для сохранения.

read_csv — самая частая операция

Загрузить CSV-файл в DataFrame — одна строка:

df = pd.read_csv(‘data.csv’)

Полезные параметры:

  • sep=’;’ — для файлов с разделителем-точкой с запятой (выгрузки из 1С, русский Excel);
  • encoding=’utf-8′ — если кириллица отображается «кракозябрами»;
  • index_col=0 — первый столбец как индекс;
  • nrows=1000 — загрузить только первые N строк для проверки;
  • usecols=[‘col1’, ‘col2’] — загрузить только нужные столбцы.

Практический совет: выгрузки из 1С почти всегда используют sep=’;’. Без этого параметра вся строка окажется в одной ячейке вместо нескольких столбцов.

read_excel и золотое правило index=False

Для работы с Excel необходим пакет openpyxl:

df = pd.read_excel(‘report.xlsx’, sheet_name=’Январь’)

Параметр sheet_name принимает название листа или его порядковый номер. Если не указать — загрузится первый лист.

Сохранение — через to_csv() или to_excel(). Здесь главное золотое правило:

df.to_csv(‘output.csv’, index=False)

Параметр index=False обязателен. Без него при следующей загрузке файла появится лишний столбец Unnamed: 0 — индекс DataFrame сохранился как отдельная колонка. Классическая ловушка для начинающих, которая теряет время на отладку.

Разведочный анализ данных

Первый шаг после загрузки — разведочный анализ. Три инструмента позволяют за минуту получить полную картину: что за данные, сколько пропусков, какие типы и сколько памяти занимает датасет.

head(), tail() и shape — быстрый осмотр

df.head() # первые 5 строк

df.tail(3) # последние 3 строки

df.shape # (число строк, число столбцов)

head() — первое, что нужно запустить после read_csv: он покажет, правильно ли разобрались столбцы, нет ли «кривых» заголовков, адекватны ли значения. Не пропускайте этот шаг даже в давно знакомых наборах данных.

shape — быстрая проверка: DataFrame загружен полностью и столбцов ровно столько, сколько ожидалось.

info() и describe() — диагностика и статистика

df.info() # типы данных, Non-Null Count, потребление памяти

df.describe() # count, mean, std, min, max, квартили

info() диагностирует типы данных и пропуски. Лайфхак: если числовой столбец показывает тип object — в данных «грязные» значения (пробел, буква), из-за которых pandas не смог определить тип. Также info() показывает потребление памяти — важно при работе с большими файлами.

describe() возвращает сводную статистику. Медиана (50% квартиль) надёжнее среднего при выбросах: если среди сотрудников окажется один с зарплатой в 5 млн, среднее исказится, а медиана останется стабильной.

Индексация и выборка данных

Обращение к одному столбцу через квадратные скобки: df[‘Имя’] → возвращает Series. Несколько столбцов — в двойных скобках: df[[‘Имя’, ‘Зарплата’]] → возвращает DataFrame. Типичная ошибка новичка: df[‘Имя’, ‘Зарплата’] (без внутренних скобок) → KeyError.

loc и iloc — две логики выбора строк

  loc
iloc
По чему ищет По метке индекса По целочисленной позиции
Принимает Строки, даты, любые метки Только целые числа (0, 1, 2…)
Пример df.loc[‘Алексей’] df.iloc[0]

Мнемоника: iloc = integer location — всегда цифра. iloc[0] вернёт первую строку независимо от того, как называется её метка индекса. loc работает по метке: df.loc[‘2024-01-01’] найдёт строку с датой в индексе, а df.loc[‘Алексей’] — строку с именем.

Важный нюанс срезов: с loc границы включительные с обоих концов — df.loc[0:3] вернёт строки 0, 1, 2 и 3. В iloc — как в Python-списке: df.iloc[0:3] вернёт 0, 1, 2 (без 3).

Булева фильтрация — аналог SQL WHERE

Самый частый способ отбора строк — булева маска:

# Одно условие

df[df[‘Зарплата’] > 100000]

# AND — каждое условие в скобках

df[(df[‘Роль’] == ‘Data Analyst’) & (df[‘Зарплата’] > 80000)]

# OR

df[(df[‘Роль’] == ‘ML Engineer’) | (df[‘Зарплата’] > 120000)]

# Отрицание

df[~df[‘Роль’].isin([‘Manager’])]

Критически важно: каждое условие при & и | — в круглых скобках. Без них Python вычислит & раньше сравнения из-за приоритета операций, и результат окажется неверным.

Альтернатива — метод .query(): df.query(‘Зарплата > 100000’). Удобен при последовательном вызове методов цепочкой.

Очистка данных

По оценкам специалистов в области анализа данных, значительная часть рабочего времени уходит на подготовку и очистку данных (Data Cleaning) — это норма. Pandas автоматизирует большинство рутинных операций.

Пропуски (NaN) — найти, решить, устранить

# Сколько пропусков в каждой колонке

df.isna().sum()

# Удалить строки с пропусками (если их мало)

df_clean = df.dropna()

# Заполнить пропуски — числовые

df[‘Зарплата’] = df[‘Зарплата’].fillna(df[‘Зарплата’].mean())

# Заполнить пропуски — текстовые

df[‘Регион’] = df[‘Регион’].fillna(‘Не указан’)

Стратегия выбора: если пропусков менее 5% от строк — можно удалить через dropna(). При большем числе — заполняйте медианой (для числовых с выбросами) или средним (для равномерных данных). Удаление строк при значительном числе пропусков исказит выборку.

Дубликаты, переименование и новые столбцы

# Удалить дублирующиеся строки

df = df.drop_duplicates()

Хотите сменить профессию или повысить квалификацию?

Федеральный проект «Активные меры содействия занятости» даёт возможность пройти обучение бесплатно за счёт государства

  • Программы от ведущих вузов России — от 2 месяцев
  • Удостоверение или диплом установленного образца
  • Центр карьеры: 7 500+ вакансий, помощь с трудоустройством
Оставить заявку
image

# Переименовать столбцы

df = df.rename(columns={‘old_name’: ‘new_name’})

# Новый столбец через векторизацию — быстро

df[‘Бонус’] = df[‘Зарплата’] * 0.1

# Функциональный стиль — возвращает новый DataFrame

df = df.assign(Бонус=lambda x: x[‘Зарплата’] * 0.1)

Обратите внимание: столбец ‘Бонус’ вычисляется сразу для всех строк через векторизацию — операция применяется ко всему столбцу целиком. Никогда не создавайте столбцы через for-цикл с iterrows() — в следующем разделе объясним разницу в скорости.

Группировка и агрегация данных

groupby() — центральный метод для аналитики: сгруппировать данные по категориям, применить функцию и получить сводный результат. Это реализация паттерна Split-Apply-Combine (разделить — применить — собрать).

groupby() и паттерн Split-Apply-Combine

Три шага:

  1. Split — разбить DataFrame на группы по уникальным значениям столбца.
  2. Apply — применить функцию к каждой группе.
  3. Combine — собрать результаты в один объект.

# Средняя зарплата по ролям

df.groupby(‘Роль’)[‘Зарплата’].mean()

# Множественная группировка

df.groupby([‘Роль’, ‘Город’])[‘Зарплата’].median()

Результат — Series, где индекс — уникальные значения группировки. Это прямой аналог SQL GROUP BY, только без базы данных.

Именованные агрегации через .agg()

Для нескольких метрик одновременно:

# Несколько функций сразу

df.groupby(‘Роль’)[‘Зарплата’].agg([‘mean’, ‘sum’, ‘count’])

# Именованные агрегации (pandas 0.25+)

result = df.groupby(‘Роль’).agg(

avg_salary=(‘Зарплата’, ‘mean’),

headcount=(‘Имя’, ‘count’),

max_salary=(‘Зарплата’, ‘max’)

)

Именованные агрегации — удобный синтаксис, появившийся в pandas версии 0.25: результирующие столбцы сразу получают читаемые имена без лишних вызовов .rename(). Удобно для финальных отчётов и дашбордов.

Сводные таблицы — pd.pivot_table()

Аналог сводной таблицы Excel — прямо в коде:

pd.pivot_table(

df,

values=’Зарплата’,

index=’Роль’,

columns=’Город’,

aggfunc=’mean’,

fill_value=0

)

Параметр fill_value=0 заполняет пустые ячейки нулями — итоговая матрица получается без пропусков. На выходе — кросс-таблица «роль × город» со средними значениями зарплат в каждой ячейке.

Объединение датафреймов

Два основных инструмента: pd.concat() — склеить таблицы вертикально (добавить строки), pd.merge() — соединить горизонтально (JOIN по ключу).

pd.concat() — склеить таблицы с одинаковой структурой

df_all = pd.concat([df_jan, df_feb, df_mar], ignore_index=True)

Параметр ignore_index=True обязателен: без него индексы из каждого DataFrame сохранятся в итоговом — получится дублирование (0, 1, 2, 0, 1, 2). При обращении через loc это вызовет неожиданные результаты.

Типичный сценарий: ежемесячные выгрузки продаж по одинаковой структуре — объединить в годовой набор данных одной командой.

pd.merge() — SQL JOIN в Python

df_result = pd.merge(df_orders, df_clients, on=’client_id’, how=’left’)

Параметр how определяет тип объединения:

how
Логика
SQL-аналог
‘inner’ Только совпадающие ключи INNER JOIN
‘left’ Все строки левой таблицы + совпадения справа LEFT JOIN
‘right’ Все строки правой таблицы + совпадения слева RIGHT JOIN
‘outer’ Все строки обеих таблиц, NaN там, где нет совпадения FULL OUTER JOIN

Правило 90%: используйте how=’left’ — все строки левой таблицы сохранятся, а из правой подтянутся только совпадения. Это аналог функции ВПР (VLOOKUP) в Excel, только быстрее и без ограничений на размер таблицы.

Производительность и оптимизация кода

Пирамида скорости pandas: векторизация быстрее apply и iterrows

Три правила эффективного кода на pandas: используй встроенную векторизацию вместо циклов, применяй apply() только там, где встроенного не хватает, пиши цепочки методов вместо промежуточных переменных.

Главный антипаттерн — for + iterrows()

# ❌ Медленно — Python-цикл по каждой строке

for index, row in df.iterrows():

if row[‘role’] == ‘Dev’:

df.at[index, ‘salary’] = row[‘salary’] * 1.2

# ✅ Быстро — векторизованная операция

df.loc[df[‘role’] == ‘Dev’, ‘salary’] *= 1.2

iterrows() перебирает каждую строку по одной в Python-цикле. На датасете из 2 млн строк это займёт минуты. Векторизованная операция работает через NumPy C-backend: разница в скорости составляет от 100 до 1000 раз.

Запомните: если вы пишете for с iterrows() — это сигнал остановиться и найти векторизованный аналог.

apply() и цепочки методов

apply() — компромисс между гибкостью и скоростью:

# apply для нестандартной логики

df[‘category’] = df[‘salary’].apply(lambda x: ‘senior’ if x > 100000 else ‘junior’)

apply() — замаскированный for-цикл. Он медленнее встроенных методов, но быстрее iterrows(). Используйте для нестандартной логики: парсинг строк, сложные условия, обращение к внешним сервисам.

Цепочки методов (Method Chaining) делают код читаемым как рецепт сверху вниз:

result = (

df

.dropna()

.query(‘Зарплата > 50000’)

.groupby(‘Город’)[‘Зарплата’]

.mean()

.sort_values(ascending=False)

)

Скобки в начале позволяют переносить строки без символа \. Читается как последовательность действий: убрать пропуски → отфильтровать → сгруппировать → взять среднее → отсортировать.

Шпаргалка по pandas: все ключевые методы

Справочная таблица для повседневной работы. Охватывает около 90% операций, с которыми сталкивается аналитик данных. Сохраните в закладки — возвращаться к ней удобнее, чем листать полную документацию pandas на русском.

Категория
Метод
Пример
I/O read_csv() pd.read_csv(‘f.csv’, sep=’;’)
I/O read_excel() pd.read_excel(‘f.xlsx’, sheet_name=0)
I/O to_csv() df.to_csv(‘out.csv’, index=False)
EDA head() df.head(10)
EDA info() df.info()
EDA describe() df.describe()
EDA shape df.shape
Индексация loc[] df.loc[‘label’]
Индексация iloc[] df.iloc[0:5]
Фильтрация Булева маска df[df[‘age’] > 18]
Фильтрация query() df.query(‘age > 18’)
Очистка isna().sum() df.isna().sum()
Очистка fillna() df[‘col’].fillna(0)
Очистка dropna() df.dropna()
Очистка drop_duplicates() df.drop_duplicates()
Трансформация rename() df.rename(columns={‘a’: ‘b’})
Трансформация assign() df.assign(col=lambda x: …)
Группировка groupby() df.groupby(‘col’)[‘val’].mean()
Группировка agg() .agg(avg=(‘val’, ‘mean’))
Объединение concat() pd.concat([df1, df2], ignore_index=True)
Объединение merge() pd.merge(df1, df2, on=’id’, how=’left’)

Для визуализации добавьте df.plot() или df[‘col’].hist() — они работают через matplotlib, который устанавливается отдельно командой pip install matplotlib.

Как продолжить изучение pandas

Три проверенных ресурса для углублённого освоения:

  • pandas.pydata.org — официальная документация с примерами на всех основных методах.
  • Книга Уэса Маккинни «Python и анализ данных» — самое полное практическое руководство, доступное на русском языке.
  • Google Colab — облачная практика без установки: открываете браузер, пишете import pandas as pd и работаете с реальными наборов данных сразу.

Освоить pandas с нуля до уровня, достаточного для работы аналитиком данных, реально за 2–3 месяца при системном подходе. Шпаргалка из этой статьи покрывает 90% задач, с которыми вы столкнётесь в первый год.

Если хотите освоить анализ данных с нуля и получить официальный документ об образовании — в рамках федерального проекта «Активные меры содействия занятости» доступна программа «Специалист по аналитике и базам данных в информационных системах» (256 часов). Обучение онлайн, в удобное время, без вложений — за счёт государственного финансирования. Смотрите каталог доступных программ.

Часто задаваемые вопросы

Что такое pandas в Python простыми словами?

Pandas — бесплатная Python-библиотека для анализа табличных данных. Название происходит от PANel DAta — «панельные данные». Создана в 2008 году Уэсом Маккинни. Две основные структуры: Series (одна колонка с индексом) и DataFrame (полноценная таблица). Позволяет загружать CSV и Excel, фильтровать строки, группировать и очищать данные — за несколько строк кода вместо сотен.

Чем pandas лучше Excel?

Excel зависает на таблицах свыше 1 млн строк и не поддерживает автоматизацию через код. Pandas обрабатывает сотни миллионов строк в памяти, весь пайплайн записывается как воспроизводимый скрипт, а результаты легко передаются в модели машинного обучения. Дополнительный плюс: pandas не требует системы управления базами данных, в отличие от SQL.

В чём разница между Series и DataFrame?

Series — одномерный массив с индексом (одна колонка данных). DataFrame — двумерная таблица, каждый столбец которой является объектом Series. Series используют для работы с одним показателем; DataFrame — когда нужны несколько признаков одновременно и важно совмещать операции над разными столбцами.

Чем отличается loc от iloc?

loc ищет строку по метке индекса (имя, дата, строковый ключ). iloc ищет по целочисленной позиции (0, 1, 2…). Мнемоника: iloc = integer location — всегда цифры. Если индекс таблицы строковый, iloc[0] всё равно вернёт первую строку по позиции, а loc[‘Алексей’] — строку с меткой «Алексей».

Как загрузить CSV-файл в pandas?

Базовая команда: df = pd.read_csv(‘data.csv’). Для файлов с разделителем «;» (1С, русский Excel): pd.read_csv(‘data.csv’, sep=’;’). Для кириллицы добавьте encoding=’utf-8′. Чтобы загрузить только часть файла: nrows=1000. После загрузки всегда выполняйте df.head() и df.info() для проверки корректности.

Как работать с пропусками (NaN) в pandas?

Сначала диагностика: df.isna().sum() — подсчёт пропусков в каждой колонке. Затем решение: если пропусков мало — df.dropna() (удалить строки); если много — df[‘col’].fillna(df[‘col’].mean()) для числовых или df[‘col’].fillna(‘Не указан’) для текстовых. Удаление строк искажает выборку, поэтому заполнение предпочтительнее при доле пропусков выше 5%.

Как сгруппировать данные в pandas?

Метод groupby() реализует паттерн Split-Apply-Combine. Базовый синтаксис: df.groupby(‘Роль’)[‘Зарплата’].mean(). Для нескольких агрегаций: .agg([‘mean’, ‘sum’, ‘count’]). Именованные агрегации (pandas 0.25+): df.groupby(‘Роль’).agg(avg=(‘Зарплата’, ‘mean’), count=(‘Имя’, ‘count’)) — результат сразу с читаемыми именами столбцов. Это аналог SQL GROUP BY.

Где найти документацию по pandas на русском?

Официальная документация (на английском): pandas.pydata.org. На русском: книга Уэса Маккинни «Python и анализ данных» — самое полное справочное руководство. Для практики без установки — Google Colab: открываете браузер, вводите import pandas as pd — и работаете. Шпаргалка в этой статье покрывает 90% повседневных операций.

Подайте заявку —
забронируйте место в группе

45 000 мест на 2026 год. Бесплатное обучение по федеральному проекту «Активные меры содействия занятости»

  • Онлайн
  • От 2 месяцев
  • Бесплатно
  • Диплом
Учиться бесплатно
icon