[МУЗЫКА] [МУЗЫКА] [МУЗЫКА] Давайте познакомимся подробнее с библиотекой 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'я.