pandas — это библиотека, то есть набор заранее подготовленных методов и функций, которые позволяют не изобретать велосипед каждый раз, а использовать уже созданные и протестированные алгоритмы. Библиотека pandas предназначена для анализа уже структурированных данных, то есть размещённых не хаотично, а в таблицах. Такие данные ещё называют «панельными», откуда и пошло название библиотеки: PANel DAta → pandas.
Библиотека pandas в Python нужна потому, что структурированные данные часто бывают в форматах, которые не подходят моделям машинного обучения, — например, в виде таблиц Excel. Их нужно предварительно преобразовать, обработать и очистить, и в этом помогает библиотека pandas.
Аналитики данных используют pandas для того, чтобы:
● Группировать данные по определённым признакам.
● Создавать сводные таблицы из нескольких.
● Очищать данные от дубликатов и невалидных строк или столбцов.
● Выводить определённые значения по фильтрам или уникальности.
● Использовать агрегирующие функции, например подсчёт значений, сумму элементов, среднее значение.
● Визуализировать собранные данные.
pandas — только одна библиотека Python и один из множества инструментов для анализа данных. Обращению с ней, как и с другими инструментами, учат на курсе «Аналитик данных».
По умолчанию pandas не встроена в Python. Установить её и начать работу можно с помощью инструкции на официальном сайте библиотеки. Проще всего сначала скачать программу Anaconda, которая позволяет управлять пакетами для работы с данными и в том числе содержит библиотеку pandas. После установки можно использовать доступные в pandas функции при написании кода на Python.
Обычно для работы с данными используют специальную среду разработки — Jupyter Notebook. В ней можно писать код на Python, используя в том числе библиотеку pandas, выполнять программы итерационно и анализировать результаты выполнения отдельных операций, например выборки из таблицы.
Структура — это представление данных с заранее определёнными свойствами и способом хранения. Каждая структура определена некоторым набором операций и методов для взаимодействия с ней.
При работе с pandas Python-программисты имеют дело с двумя основными структурами данных: Series и DataFrames.
Массив Series обладает фиксированным размером. Он инициализируется, или создаётся, один раз, с конкретными значениями и индексами. В дальнейшем добавлять или удалять элементы нельзя.
Чтобы работать с таблицами в 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 есть множество функций, которые позволяют по-разному подготавливать и обрабатывать данные. Все они перечислены в документации к библиотеке. Рассмотрим часто используемые операции.
Метод iloc делает срез по индексам строк и столбцов. Например: в df.iloc[0:100, 0:5].
Чтобы выделить столбец в отдельный список и легче извлекать из него данные, нужно использовать метод tolist. Он выглядит как df['Имя'].tolist() и собирает названия столбцов в отдельный список df.columns.tolist().
Добавить строку чуть сложнее. Для этого нужно сначала составить переменную с ключами — названиями столбцов, а потом добавить её в виде строки:
new = {'Имя': 'Игнат', 'Возраст': '21', 'Профессия': 'Плотник'}.
df = df.append(new, ignore_index=True)
Все колонки, которые не указаны, заполнятся значениями NaN автоматически, а строка попадёт в конец DataFrame. Параметр ignore_index=True нужен, чтобы строка добавилась без ошибки.
Можно добавить строку или столбец, не задавая значение явно, а используя функцию: sum(), mean(), median().
Для удаления используется метод drop().
Возьмём из таблицы два столбца — профессию и возраст. Возраст поместим в индекс, профессию — в столбцы, а ячейки заполним средней зарплатой, которую получают люди этой профессии в каждом конкретном возрасте. Для этого можно использовать такую команду:
zp.pivot_table(df, index = ['Возраст'], columns = ['Профессия'], values = 'Зарплата', aggfunc = 'mean')
Это создаст новую DataFrame zp такого вида:
Эта операция подготовит данные к построению на их основе нейронных сетей и моделей. Для этого существуют базовые функции:
● drop_duplucates() удаляет дубликаты, то есть полностью идентичные строки.
● fillna() заменяет пропуски NaN на какое-то значение, например на нули.
● dropna() удаляет строки с NaN из таблицы.
Николай Федосеев
pandas — одна из наиболее часто используемых библиотек для обработки данных в проектах машинного обучения и Data Science. Чтобы изучить библиотеку на практике, можно использовать сервис Colab, который позволяет запускать код Python в браузере. Для глубокого погружения в pandas и его возможности рекомендую книгу Маккинни «Python и анализ данных».
Читать также: