Анализ данных  •  17 ноября  2022  •  5 мин чтения

Основы анализа данных в Python: главное о библиотеке pandas

Python — один из популярных языков для анализа данных. Для этого в нём есть несколько инструментов, один из которых — библиотека pandas.

Что такое библиотека pandas

pandas — это библиотека, то есть набор заранее подготовленных методов и функций, которые позволяют не изобретать велосипед каждый раз, а использовать уже созданные и протестированные алгоритмы. Библиотека pandas предназначена для анализа уже структурированных данных, то есть размещённых не хаотично, а в таблицах. Такие данные ещё называют «панельными», откуда и пошло название библиотеки: PANel DAta → pandas.

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

Аналитики данных используют pandas для того, чтобы:

● Группировать данные по определённым признакам.
● Создавать сводные таблицы из нескольких.
● Очищать данные от дубликатов и невалидных строк или столбцов.
● Выводить определённые значения по фильтрам или уникальности.
● Использовать агрегирующие функции, например подсчёт значений, сумму элементов, среднее значение.
● Визуализировать собранные данные.

pandas — только одна библиотека Python и один из множества инструментов для анализа данных. Обращению с ней, как и с другими инструментами, учат на курсе «Аналитик данных».

По умолчанию pandas не встроена в Python. Установить её и начать работу можно с помощью инструкции на официальном сайте библиотеки. Проще всего сначала скачать программу Anaconda, которая позволяет управлять пакетами для работы с данными и в том числе содержит библиотеку pandas. После установки можно использовать доступные в pandas функции при написании кода на Python.

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

Структуры данных в pandas

Структура — это представление данных с заранее определёнными свойствами и способом хранения. Каждая структура определена некоторым набором операций и методов для взаимодействия с ней.
При работе с pandas Python-программисты имеют дело с двумя основными структурами данных: Series и DataFrames.

Series
Это одномерный массив, то есть список данных. Он состоит из нескольких элементов, у каждого из которых есть индекс. В качестве индекса может быть номер элемента, буква либо какой-то другой ключ, заданный заранее. Если индексы не переопределить, то они будут созданы автоматически.
Автоматические индексы всегда начинаются с 0
С помощью индекса можно обратиться к конкретным элементам Series, заменить их значения или отфильтровать только определённый диапазон значений.

Массив Series обладает фиксированным размером. Он инициализируется, или создаётся, один раз, с конкретными значениями и индексами. В дальнейшем добавлять или удалять элементы нельзя.

DataFrames
Это двумерный массив, больше всего похожий на привычную таблицу. Каждый элемент находится в ячейке, у которой есть адрес, состоящий из строки и столбца. Столбцы в DataFrames — это структуры Series.
У каждой строки и столбца есть индекс. Они могут быть расставлены автоматически, а могут быть заданы вручную
У каждой строки и столбца есть индекс. Они могут быть расставлены автоматически, а могут быть заданы вручную
DataFrame — это название и структуры, и объектов. То есть объекты, созданные с этой структурой, также называются DataFrames, или фреймами.
Материал по теме:
Всё о языке программирования Python: растущая популярность, плюсы и минусы, сферы применения

Основы анализа данных в pandas

Чтобы работать с таблицами в pandas, их нужно заранее загрузить из файла. Для этого существует функция read, в которой нужно указать тип обрабатываемого файла: CSV, Excel или SQL. Например, команда df = pd.read_csv('names.csv', sep=',') создаст из файла names.csv структуру DataFrame с названием df. Переменная sep — это указатель на разделитель столбцов, для него обычно используют запятую.

Теперь с этим DataFrame можно взаимодействовать с помощью следующих методов:

●    head и tail выводят строки с начала и с конца;
●    display() полностью отображает DataFrame;
●    shape показывает количество строк и столбцов;
●    rename переименовывает столбцы;
●    describe выдаёт первичные статистические характеристики набора данных: среднее значение, стандартное отклонение, максимум и минимум и некоторые другие.

Это базовые операции, а для полноценного анализа нужны другие методы, которые позволяют более глубоко изучать столбцы и строки: сводные таблицы, срезы фреймов, визуализация.

Базовые операции со столбцами и строками

В pandas есть множество функций, которые позволяют по-разному подготавливать и обрабатывать данные. Все они перечислены в документации к библиотеке. Рассмотрим часто используемые операции.

Срез фрейма
Операция позволяет выделить из общего DataFrame несколько столбцов. Для этого необходимо использовать срез, который выглядит как df[['Имя', 'Возраст']]. Указанная команда из общей таблицы с данными выделит срез, содержащий столбцы с именами, возрастами и индексами строк. Срез можно сохранить в новой переменной, в виде нового фрейма.
Другие столбцы DataFrame при этом никуда не исчезают — они просто не отображаются
Другие столбцы DataFrame при этом никуда не исчезают — они просто не отображаются
«Вырезать» столбцы «от и до» позволяет метод loc. Например, df.loc [:, 'Место в рейтинге':'Семейное положение'] выведет все столбцы от имени до семейного положения, сколько бы их ни было между ними.

Метод iloc делает срез по индексам строк и столбцов. Например: в df.iloc[0:100, 0:5].

Чтобы выделить столбец в отдельный список и легче извлекать из него данные, нужно использовать метод tolist. Он выглядит как df['Имя'].tolist() и собирает названия столбцов в отдельный список df.columns.tolist().

Добавление и удаление строк и столбцов
DataFrame можно изменять, в том числе добавляя столбцы и строки. Причём это можно делать на основе уже существующих данных в DataFrame. Например, можно создать столбец 'Общий доход', который станет суммой столбцов 'Зарплата' и 'Доход от инвестиций'.

Добавить строку чуть сложнее. Для этого нужно сначала составить переменную с ключами — названиями столбцов, а потом добавить её в виде строки:

new = {'Имя': 'Игнат', 'Возраст': '21', 'Профессия': 'Плотник'}.

df = df.append(new, ignore_index=True)

Все колонки, которые не указаны, заполнятся значениями NaN автоматически, а строка попадёт в конец DataFrame. Параметр ignore_index=True нужен, чтобы строка добавилась без ошибки.

Можно добавить строку или столбец, не задавая значение явно, а используя функцию: sum(), mean(), median().

Для удаления используется метод drop().

Группировка и агрегирование данных
Метод groupby позволяет проанализировать группы данных и сравнить их показатели. Например, df.groupby('Профессия').count() посчитает, сколько строк с каждой профессией есть в таблице.
Результат применения groupby покажет, сколько в таблице учителей, врачей, таксистов и представителей других профессий
Результат применения groupby покажет, сколько в таблице учителей, врачей, таксистов и представителей других профессий
Сводные таблицы
Для сопоставления и обобщения данных из одной или нескольких таблиц существует метод pivot_table. Он позволяет создавать новые DataFrames по координатам как строк, так и столбцов. Здесь можно использовать операторы, например суммирование или вычисление среднего.

Возьмём из таблицы два столбца — профессию и возраст. Возраст поместим в индекс, профессию — в столбцы, а ячейки заполним средней зарплатой, которую получают люди этой профессии в каждом конкретном возрасте. Для этого можно использовать такую команду:

zp.pivot_table(df, index = ['Возраст'], columns = ['Профессия'], values = 'Зарплата', aggfunc = 'mean')

Это создаст новую DataFrame zp такого вида:

Функция mean усреднит значения зарплат. Там, где в таблице значений нет, появятся ячейки с NaN, то есть пустые
Функция mean усреднит значения зарплат. Там, где в таблице значений нет, появятся ячейки с NaN, то есть пустые
Сортировка
Функция sort_values() позволяет сортировать таблицы по значению определённого столбца по убыванию. Например, df.sort_values(by = 'Зарплата').head() выведет первые 5 строк с описанием людей с самой высокой зарплатой.
Расположение столбцов при сортировке останется тем же, но все строки будут перетасованы
Расположение столбцов при сортировке останется тем же, но все строки будут перетасованы
Для сортировки по другим критериям можно задавать параметры. Например, ascending=False позволяет отсортировать по убыванию.
Очистка данных

Эта операция подготовит данные к построению на их основе нейронных сетей и моделей. Для этого существуют базовые функции:

●     drop_duplucates() удаляет дубликаты, то есть полностью идентичные строки.
●     fillna() заменяет пропуски NaN на какое-то значение, например на нули.
●     dropna() удаляет строки с NaN из таблицы.

Совет эксперта

Николай Федосеев
pandas — одна из наиболее часто используемых библиотек для обработки данных в проектах машинного обучения и Data Science. Чтобы изучить библиотеку на практике, можно использовать сервис Colab, который позволяет запускать код Python в браузере. Для глубокого погружения в pandas и его возможности рекомендую книгу Маккинни «Python и анализ данных».

Статью подготовили:

Яндекс Практикум
Education Mentor,
SDE в PlayCanvas
Яндекс Практикум
Редактор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться

Успейте начать учебу в Практикуме до конца ноября со скидкой 20%

Wed Jul 31 2024 13:56:25 GMT+0300 (Moscow Standard Time)