[МУЗЫКА]
[МУЗЫКА] [МУЗЫКА]
Давайте познакомимся подробнее с библиотекой Pandas.
Pandas — это библиотека на Python, которая позволяет нам осуществлять начальную
аггрегацию и трансформацию данных, читать данные из различных источников,
из csv-таблиц, из excel-таблиц, из xls-таблиц,
а также некоторых других источников данных.
Pandas интегрирована с многими библиотеками экосистемы Python,
и Pandas позволяет нам осуществлять изначальную обработку некоторую,
простую обработку, визуализацию данных с помощью библиотеки matplotlib.
Основной концепт Pandas — это Series, изначальный концепт.
Серия — это некоторый типизированный массив.
Давайте потестируем наш Pandas и создадим серию.
Как вы видите, кроме собственных данных, которые мы передали со стандартного
python'овского листа, у нас есть еще и индекс.
В качестве индекса по дефолту выступают упорядоченные целые числа,
но в принципе, можно использовать строки, даты и многие другие типы объектов.
Вот здесь мы, например, создаем серию с индексом из строк.
Можно также использовать и напрямую словари с аналогичным результатом.
К элементам обращаться по индексу.
А из-за того, что индекс упорядоченный, то Pandas также позволяет нам индексировать
нашу серию по порядку, то есть осуществлять поиск элементов по порядку,
ровно точно так же, как мы индексировали python'овские листы.
Также в сериях можно использовать срезы.
Причем семантика срезов аналогична семантике срезов в листах и в NumPy
array'ах.
Давайте также посмотрим.
Серия — это некоторая оболочка, некоторая обертка над NumPy array'ем,
и вызвав свойство values, можно получить низлежащий NumPy array,
а также можно получить и напрямую объект index, в котором хранится, понятное дело,
индекс нашей серии.
Давайте рассмотрим некоторый более интересный пример.
В материалах к данному видео также имеются таблицы,
давайте загрузим одну из них в серию с помощью вызова функции from_csv.
Как вы видите, это курс евро за некоторый период в апреле 2017-го.
Причем серия напрямую определила,
что индексом являются даты и скастовала наши строки в дату.
Кроме того, серии можно индексировать с помощью условий.
Давайте попробуем найти те даты, в которые курс евро был меньше 60 рублей.
Вот таким образом мы получаем битовую маску, некоторую серию,
где true стоит там, где условие выполняется, а false, соответственно там,
где не выполняется, а с помощью вот такой нехитрой индексации можно получить серию с
теми элементами, для которых в маске стояло true.
Или можем попробовать сделать более сложное условие.
Найти те даты, для которых курс евро был меньше 60 рублей,
а сами даты были после 4-го апреля.
Как вы можете заметить, в данном случае мы используем составное условие.
То есть у нас есть две битовые маски, две серии из boolean,
и мы используем между ними логическую операцию.
С помощью серии, мы можем оперировать только с одномерными массивами,
только с одномерными величинами.
Предположим, мы хотим проанализировать, например, совместные курсы доллара,
евро и, скажем, британского фунта.
Для этого можно использовать DataFrame.
DataFrame — это фактически набор из серий с некоторым единым индексом.
Можно представлять себе DataFrame как некоторую Excel-таблицу.
Только оперируем мы с ним не с помощью Excel'я, а с помощью Python'а программно.
Давайте создадим наш DataFrame.
Его можно создать аналогично сериям с помощью нескольких массивов.
Мы передаем данные, мы передаем колонку.
DataFrame, опять же, автоматически создает нам индекс.
Или также мы можем создать DataFrame не построчно, а по столбцам.
В принципе, аналогичный результат.
Однако давайте же считаем другой файл, currencies.csv.
Это тоже таблица, в которой лежат курсы валют примерно за тот же промежуток
времени, только еще и для доллара и для британского фунта.
С помощью DataFrame мы можем получить отдельный столбец,
который будет представлен, ну скажем, в виде объекта series.
Так оно и есть.
Или срезать DataFrame, то есть взять несколько столбцов, которые нам интересны.
Например, для доллара и британского фунта.
А также мы можем создать новый столбец из старых, применяя некоторые операции.
Как вы видите, мы получили разницу между британским фунтом и евро.
Или же посмотреть, насколько изменился курс евро и доллара с прошлого дня.
Тут мы можем воспользоваться функцией shift.
Также индексация осуществляется с помощью функции loc и iloc.
Допустим, мы хотим получить DataFrame, который состоит из строк,
где изменения доллара и евро с прошлого дня стали отрицательными.
То есть доллар и евро подешевели.
Да, действительно, бывает и так.
Или же, если нам необходимо обратиться к номеру строки,
то можно использовать свойство iloc и срезать наш DataFrame построчно.
Pandas имеет некоторое количество функций для подсчета простой статистики.
Например, мы можем посчитать корреляцию между столбцом,
отвечающим за курс доллара, и столбцом, отвечающим за курс евро.
Как вы видите, коэффициент корреляции достаточно высок.
Или математическое ожидание курсов валют.
Тоже похоже на правду.
Можно также и визуализировать наши данные.
Данные можно визуализировать, используя библиотеку matplotlib.
Давайте заинлайним matplotlib, то есть сделаем так, чтобы вывод matplotlib
интегрировался в наш IPython Notebook, и нарисуем простенький график.
Видите?
Вот он, график курсов доллара и евро.
Кроме того, DataFrame можно сохранять на жесткий диск.
Например, с помощью функции to_csv мы сохраняем наш DataFrame в csv-таблицу,
с помощью функции to_excel мы сохраняем ее в xls-файл,
которым в дальнейшем можно оперировать в рамках того же самого Excel'я.