
Pandas – это одна из самых популярных библиотек для обработки и анализа данных в языке Python. Она предоставляет удобные структуры данных, такие как DataFrame и Series, которые позволяют эффективно работать с таблицами, временными рядами и другими структурированными данными. С момента своего появления в 2008 году Pandas зарекомендовала себя как незаменимый инструмент в области анализа данных, машинного обучения и научных исследований.
Основной задачей Pandas является упрощение работы с данными, позволяя пользователю легко фильтровать, изменять и агрегистрировать большие объемы информации. Например, библиотека поддерживает чтение и запись данных из множества форматов, включая CSV, Excel, SQL и JSON. Это делает Pandas идеальным инструментом для подготовки данных перед применением алгоритмов машинного обучения или статистических моделей.
Одной из ключевых особенностей Pandas является способность работать с пропущенными значениями. Используя методы dropna() и fillna(), можно оперативно заполнять или удалять такие данные, что важно для анализа, где полные строки могут быть критичными для точности модели.
Кроме того, Pandas поддерживает мощные функции для манипуляции и агрегации данных. С помощью groupby() можно легко сегментировать данные и выполнять статистические вычисления по группам. Этот подход широко используется при обработке данных о продажах, анализе поведения пользователей или исследовании финансовых показателей.
Установка и настройка библиотеки Pandas в Python

Для установки библиотеки Pandas используется менеджер пакетов pip. Для этого достаточно выполнить следующую команду в командной строке или терминале:
pip install pandas
После этого Pandas будет установлена и готова к использованию. Важно, чтобы у вас была установлена актуальная версия Python, так как старые версии могут не поддерживать все функции библиотеки. Рекомендуется использовать Python версии 3.6 и выше.
Если вы используете Jupyter Notebook или Google Colab, то библиотека Pandas обычно уже предустановлена. Для проверки наличия Pandas в вашей среде можно выполнить команду:
import pandas as pd
Если при импорте не возникает ошибок, значит, установка прошла успешно. Если библиотека не установлена, можно выполнить команду установки прямо в ячейке Jupyter:
!pip install pandas
Для работы с Pandas в виртуальных окружениях рекомендуется использовать venv или conda. В случае с conda команду установки можно выполнить так:
conda install pandas
После установки Pandas можно приступать к импорту библиотеки в коде:
import pandas as pd
Использование сокращения pd позволяет удобно обращаться ко всем методам и аттрибутам Pandas в дальнейшем коде.
Создание и манипуляция DataFrame в Pandas
import pandas as pd
data = {'Имя': ['Иван', 'Мария', 'Анна'],
'Возраст': [28, 24, 22],
'Город': ['Москва', 'Санкт-Петербург', 'Казань']}
df = pd.DataFrame(data)
print(df)
Этот код создаст таблицу с тремя столбцами: «Имя», «Возраст» и «Город». Индексы строк будут автоматически присвоены числами от 0 до 2.
Можно задавать индексы вручную, передав параметр index в метод DataFrame(). Например:
df = pd.DataFrame(data, index=['a', 'b', 'c'])
print(df)
В результате индексы строк будут ‘a’, ‘b’ и ‘c’.
Манипулировать данными в DataFrame можно с помощью различных методов. Чтобы выбрать определённый столбец, достаточно указать его имя, например:
df['Имя']
Для фильтрации строк, где возраст больше 23, используйте следующий код:
df[df['Возраст'] > 23]
Чтобы добавить новый столбец в DataFrame, можно присвоить его значения напрямую:
df['Работа'] = ['Инженер', 'Маркетолог', 'Студент']
print(df)
Удаление столбца осуществляется через метод drop(). Например, чтобы удалить столбец «Город»:
df = df.drop('Город', axis=1)
print(df)
Для изменения значений в существующих ячейках можно использовать индексирование. Например, чтобы изменить возраст Марии:
df.loc[df['Имя'] == 'Мария', 'Возраст'] = 25
print(df)
Манипуляции с DataFrame также включают операции с пропущенными данными. Для заполнения пропусков можно использовать метод fillna():
df['Возраст'] = df['Возраст'].fillna(df['Возраст'].mean())
print(df)
Для удаления строк с пропущенными значениями применяется метод dropna():
df = df.dropna()
print(df)
Чтение и запись данных с помощью Pandas
Для чтения данных из CSV-файла используется метод read_csv(). Пример:
import pandas as pd
df = pd.read_csv('data.csv')
print(df)
Если файл имеет другой разделитель, например, точку с запятой, можно указать параметр sep:
df = pd.read_csv('data.csv', sep=';')
print(df)
Для записи данных в CSV-файл используется метод to_csv(). Пример:
df.to_csv('output.csv', index=False)
Параметр index=False предотвращает сохранение индекса в файле.
Для работы с Excel-файлами применяется функция read_excel(). Чтобы прочитать данные из первого листа Excel-файла:
df = pd.read_excel('data.xlsx')
print(df)
Для записи в Excel используйте метод to_excel():
df.to_excel('output.xlsx', index=False)
Для работы с несколькими листами в Excel используйте параметр sheet_name. Например, чтобы прочитать данные с конкретного листа:
df = pd.read_excel('data.xlsx', sheet_name='Лист2')
print(df)
Для работы с базами данных можно использовать метод read_sql(), который позволяет загружать данные прямо из SQL-запроса:
import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql('SELECT * FROM table_name', conn)
print(df)
Для записи в SQL базу данных используется метод to_sql():
df.to_sql('table_name', conn, if_exists='replace', index=False)
Параметр if_exists=’replace’ указывает, что если таблица уже существует, она будет заменена новыми данными.
Для работы с JSON-файлами применяется метод read_json(), который позволяет загрузить данные из JSON-файла:
df = pd.read_json('data.json')
print(df)
Записать DataFrame в JSON-файл можно с помощью метода to_json():
df.to_json('output.json', orient='records', lines=True)
Параметр orient=’records’ указывает формат записи, а lines=True позволяет записывать каждый объект JSON в новой строке.
Основные операции с данными в Pandas: фильтрация, сортировка, агрегация

В Pandas доступны несколько ключевых операций для работы с данными: фильтрация, сортировка и агрегация. Эти операции позволяют легко обрабатывать и анализировать данные в DataFrame.
Фильтрация позволяет выбирать строки, соответствующие заданным условиям. Например, для фильтрации строк, где значение в столбце «Возраст» больше 30:
df[df['Возраст'] > 30]
Для применения нескольких условий используйте логические операторы && (AND) и || (OR). Пример:
df[(df['Возраст'] > 30) & (df['Город'] == 'Москва')]
Можно также использовать метод query() для удобной фильтрации. Например:
df.query('Возраст > 30 and Город == "Москва"')
Сортировка позволяет упорядочить данные по одному или нескольким столбцам. Например, для сортировки по столбцу «Возраст» в порядке возрастания:
df.sort_values(by='Возраст')
Для сортировки по нескольким столбцам укажите их в списке. Пример сортировки сначала по «Город», а затем по «Возраст» по убыванию:
df.sort_values(by=['Город', 'Возраст'], ascending=[True, False])
Если нужно отсортировать данные по индексу, используйте метод sort_index():
df.sort_index(ascending=False)
Агрегация позволяет группировать данные по одному или нескольким столбцам и вычислять статистики для каждой группы. Для группировки по столбцу «Город» и вычисления среднего возраста:
df.groupby('Город')['Возраст'].mean()
Можно использовать несколько агрегационных функций одновременно. Например, вычисление среднего и максимального возраста для каждого города:
df.groupby('Город')['Возраст'].agg(['mean', 'max'])
Если нужно выполнить несколько агрегаций для разных столбцов, используйте agg() с несколькими функциями:
df.groupby('Город').agg({'Возраст': 'mean', 'Доход': 'sum'})
Метод transform() позволяет применить функцию ко всем строкам в группе, не меняя форму DataFrame. Например, чтобы вычислить отклонение от среднего возраста для каждого города:
df['Отклонение от среднего'] = df.groupby('Город')['Возраст'].transform(lambda x: x - x.mean())
Для более сложной агрегации можно использовать несколько условий. Например, чтобы найти города, где средний возраст больше 30 лет, и отсортировать их по этому среднему возрасту:
df.groupby('Город')['Возраст'].mean().loc[lambda x: x > 30].sort_values(ascending=False)
Работа с пропущенными значениями в Pandas

В процессе обработки данных часто встречаются пропущенные значения. Pandas предоставляет несколько инструментов для работы с такими данными, включая их выявление, заполнение или удаление.
Поиск пропущенных значений можно выполнить с помощью методов isna() или isnull(), которые возвращают DataFrame с булевыми значениями, где True – это пропущенные данные. Пример:
df.isna()
Чтобы подсчитать количество пропущенных значений в каждом столбце, используйте sum():
df.isna().sum()
Удаление пропущенных значений выполняется с помощью метода dropna(). Для удаления всех строк, содержащих хотя бы одно пропущенное значение, используйте:
df.dropna()
Если нужно удалить только те строки, где пропущены значения в определённом столбце, укажите параметр subset:
df.dropna(subset=['Возраст'])
Для удаления столбцов с пропущенными значениями можно использовать параметр axis=1:
df.dropna(axis=1)
Заполнение пропущенных значений осуществляется через метод fillna(). Можно заполнить пропуски константным значением, например, нулём:
df.fillna(0)
Для заполнения пропущенных значений средним значением столбца используйте:
df['Возраст'] = df['Возраст'].fillna(df['Возраст'].mean())
Также можно заполнить пропуски значениями, взятыми с предыдущей или следующей строки, с помощью параметра method:
df.fillna(method='ffill')
Для заполнения пропусков более сложными значениями, например, методом линейной интерполяции, используется метод interpolate():
df['Возраст'] = df['Возраст'].interpolate()
Заполнение с учётом группы позволяет заполнить пропуски внутри каждой группы. Для этого используется метод groupby() с fillna(). Пример заполнения пропусков средним значением внутри каждой группы по столбцу «Город»:
df.groupby('Город')['Возраст'].transform(lambda x: x.fillna(x.mean()))
В ситуации, когда необходимо заменить пропущенные значения в разных столбцах по-разному, можно передать словарь в fillna():
df.fillna({'Возраст': 30, 'Город': 'Неизвестно'})
Для замены пропусков с учётом более сложной логики используется функция apply(), позволяющая настраивать замену значений в зависимости от конкретных условий.
| Метод | Описание |
|---|---|
| isna() | Выявление пропущенных значений в DataFrame |
| dropna() | Удаление строк или столбцов с пропущенными значениями |
| fillna() | Заполнение пропусков заданным значением или методом |
| interpolate() | Заполнение пропусков методом интерполяции |
Использование группировки данных и pivot-таблиц в Pandas

Группировка данных и создание pivot-таблиц – мощные инструменты для анализа и агрегации данных в Pandas. Они позволяют легко обрабатывать данные, агрегируя их по категориям или признакам.
Группировка данных с помощью метода groupby() позволяет разделить DataFrame на группы по значению одного или нескольких столбцов и выполнить агрегацию или вычисления для каждой группы. Пример: вычисление среднего возраста по городам:
df.groupby('Город')['Возраст'].mean()
Метод groupby() возвращает объект, с которым можно применить различные агрегационные функции, такие как mean(), sum(), count() и другие. Например, для подсчёта количества записей по каждому городу:
df.groupby('Город').size()
Для применения нескольких агрегационных функций сразу используйте метод agg(). Пример, когда нужно найти среднее и максимальное значение возраста для каждого города:
df.groupby('Город')['Возраст'].agg(['mean', 'max'])
Можно также использовать агрегацию с несколькими столбцами. Например, для вычисления суммы и среднего дохода по городам и профессиям:
df.groupby(['Город', 'Профессия']).agg({'Доход': 'sum', 'Возраст': 'mean'})
Pivot-таблицы позволяют сводить данные в двумерную таблицу с помощью метода pivot_table(). Это особенно полезно для создания сводных таблиц, где можно агрегировать данные по двум категориям. Пример создания pivot-таблицы для подсчёта среднего возраста по городам и профессиям:
df.pivot_table(values='Возраст', index='Город', columns='Профессия', aggfunc='mean')
Метод pivot_table() принимает несколько параметров:
- values – столбец, значения которого будут агрегироваться;
- index – столбец, по которому будут сгруппированы строки;
- columns – столбец, по которому будут сгруппированы столбцы;
- aggfunc – функция агрегации, которая применяется к данным, например, mean, sum, count и др.
Для работы с пропущенными значениями в pivot-таблицах можно использовать параметр fill_value, который заполняет пустые ячейки заданным значением. Например, чтобы заменить пропуски на 0:
df.pivot_table(values='Возраст', index='Город', columns='Профессия', aggfunc='mean', fill_value=0)
Если необходимо выполнить несколько агрегационных операций для разных столбцов в pivot-таблице, используйте aggfunc с функцией, например:
df.pivot_table(values=['Возраст', 'Доход'], index='Город', aggfunc={'Возраст': 'mean', 'Доход': 'sum'})
Визуализация данных с Pandas: подключение к Matplotlib

Pandas интегрируется с библиотекой Matplotlib, предоставляя удобные методы для создания графиков непосредственно из DataFrame. Для визуализации данных необходимо установить и подключить Matplotlib, если он ещё не установлен:
pip install matplotlib
После установки можно импортировать Matplotlib в Python-скрипте:
import matplotlib.pyplot as plt
Для того, чтобы создавать графики с использованием данных из Pandas, нужно воспользоваться встроенной функцией plot(), которая доступна для объектов DataFrame и Series.
Пример построения линейного графика для столбца «Доход» из DataFrame:
df['Доход'].plot(kind='line')
plt.show()
Параметр kind определяет тип графика. Возможные варианты: ‘line’ (линейный), ‘bar’ (гистограмма), ‘barh’ (горизонтальная гистограмма), ‘hist’ (гистограмма), ‘pie’ (круговая диаграмма), и другие.
Для построения столбчатой диаграммы по значениям в столбцах «Город» и «Доход» используйте следующий код:
df.groupby('Город')['Доход'].sum().plot(kind='bar')
plt.show()
Если необходимо настроить внешний вид графика, например, добавить подписи осей и заголовок, используйте методы Matplotlib. Пример с добавлением заголовка и подписей осей:
df['Доход'].plot(kind='line')
plt.title('График доходов')
plt.xlabel('Индексы')
plt.ylabel('Доход')
plt.show()
Для отображения нескольких графиков на одном изображении используйте функцию subplot():
plt.subplot(1, 2, 1)
df['Доход'].plot(kind='line')
plt.subplot(1, 2, 2)
df['Возраст'].plot(kind='bar')
plt.show()
Параметры subplot(1, 2, 1) означают, что создаются два графика в одной строке, и первый график будет размещён в первой ячейке. Вторая ячейка будет использоваться для второго графика.
Для более сложных настроек визуализации и интеграции с другими библиотеками, такими как Seaborn, можно использовать встроенные функции Pandas для улучшения внешнего вида графиков, например, с использованием палитр цветов или добавления легенд и сеток.
Вопрос-ответ:
Что такое библиотека Pandas и как она используется в Python?
Pandas — это библиотека для анализа и обработки данных в Python. Она предоставляет удобные структуры данных, такие как DataFrame и Series, которые позволяют эффективно работать с таблицами, временными рядами и другими структурированными данными. Основное применение Pandas — это чтение, запись, фильтрация и анализ данных в различных форматах, включая CSV, Excel, SQL и JSON. Библиотека широко используется в научных исследованиях, анализе данных и машинном обучении.
Как создать DataFrame в Pandas?
DataFrame можно создать несколькими способами. Один из них — передать данные в виде словаря, где ключи будут именами столбцов, а значения — данными в этих столбцах. Пример создания DataFrame:
Как работать с пропущенными значениями в Pandas?
В Pandas есть несколько способов обработки пропущенных значений. Для их выявления используется метод isna(), который возвращает DataFrame с булевыми значениями, где True указывает на пропущенные данные. Для удаления строк с пропусками используйте dropna(). Например:
Как с помощью Pandas создать графики и визуализировать данные?
Pandas имеет встроенные функции для визуализации данных с использованием Matplotlib. Для этого достаточно использовать метод plot() на объекте DataFrame или Series. Например, чтобы построить линейный график для столбца «Доход»:
