Python. Библиотека Pandas.

Pandas — это динамично развивающаяся библиотека для анализа данных на языке Python. В основе использует возможности библиотеки NumPy. Pandas позволяет просто выполнять различные манипуляции над табличными данными и временными рядами, выполнять срезы данных и т.д. Библиотека была написана на языке Python, однако наиболее критические ее части реализованы при помощи Cython и C. Если вы не слышали о Cython, то это язык, синтаксис которого схож с Python, однако программа перед компиляций транслируется в код на языке C.

Основными структурами данных в Pandas являются Series и DataFrame.

Series — это простой проиндексированный одномерный массив элементов. Обращение к элементу осуществляется по ключу. В этом данная структура напоминает стандартный словарь — dict.

DataFrame — это уже многомерный массив элементов, где каждый столбец является объектом Series.

В библиотеку уже встроено большое количество функций для чтения данных из различных источников, будь то реляционные базы данных, текстовые файлы или файлы в популярном для задач анализа данных формате CSV. Как работать с последними мы как раз и разберем.

Первым делом я загружу данные для анализа из открытого репозитория UCI. Это данные для оценки качества белого вина. Если хотите, то можете загрузить эти данные, перейдя по ссылке.

Импортируем библиотеку Pandas:

pandas

Прочитать данные из файла в формате *.csv можно при помощи функции read_csv():

pandas_1

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

Теперь давайте выведем наш DataFrame на экран:

pandas_2

Как итог, на экране мы увидим таблицу, состоящую из различных сортов вина и их характеристик. Эта таблица уже довольно большая и содержит относительно много строк. Для того, чтобы узнать размер таблицы, обратимся к свойству shape:

pandas_3

Таблица имеет двенадцать столбцов с заданными именами. Также мы можем получить их список, воспользовавшись свойством columns:

pandas_4

Узнать тип данных в каждом столбце можно, обратившись к свойству dtypes нашего DataFrame:

pandas_10

Получим краткую информацию по нашему DataFrame:

pandas_11

Также мы можем работать со срезами данных. Давайте выведем на экран первые 5 строк таблицы:

pandas_5

Добавление новых данных.

Мы можем добавить в нашу таблицу новые данные. Для этого нужно создать словарь, содержащий атрибуты и их значения,  а затем вызвать функцию append(). Наш словарь добавится в таблицу в виде отдельной строчки:

pandas_6

Функция append() не изменяет текущий DataFrame, а возвращает ссылку на новый объект, содержащий внесенные изменения. Параметр ignore_index означает, что данные могут добавиться в любое место таблицы.

Давайте выведем нашу таблицу на экран:

pandas_7

И мы видим, что последняя строка соответствует нашим добавленным данным.

Добавление новых столбцов (ключей).

Добавить новый столбец в DataFrame очень просто. Мы просто записываем его имя в квадратных скобках и присваиваем какие-то значения в каждой строке. Вино же может быть бесплатным?:)

pandas_8

Теперь выведем наш DataFrame на экран:

pandas_9

Вот так просто мы добавили в описание наших объектов новый параметр.

Также мы могли бы вывести данные только по этому столбцу:

pandas_12

Фильтрация данных.

Часто нам необходимо вывести только те данные, которые удовлетворяют некоторому условию, то есть выполнить фильтрацию данных. Давайте выведем только те записи, значения quality в которых больше 8:

pandas_13

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

Можно выполнять фильтрацию и по нескольким условиям:

pandas_14

Объединение данных из нескольких источников.

Часто данные к нам попадают из совершенно разных источников и их нужно объединить для последующего анализа. Допустим, мы выполняем анализ всех видов вин — не только белого. У нас есть файл winequality-red.csv, содержащий те же данные, но уже для красного вина. Объединить наборы данных вместе можно вызовом функции merge(). Данная функция работает аналогично соединению join в языке SQL.

Заполнение пропусков в данных.

Иногда наши данные содержат пустые значения и для выбора того или иного алгоритма может понадобиться заменить эти значения каким-то другим, стандартным значением, пригодным для решения поставленной задачи. Это можно осуществить при помощи функции fillna():

Параметр inplace говорит о том, что изменения будут применены к оригинальному DataFrame. В обратном случае мы получим измененную копию.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *