Знакомимся с анализом данных на Python. Часть 1

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

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

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

Переходим к обучению

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

Этап 2.1. Анализ данных

1. Изучение pandas

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

Нуждаясь в быстром и гибком инструменте для количественного анализа финансовой информации Уэс Мак-Кинни приступил к созданию pandas в 2008 году, сейчас данная библиотека считается одной из наиболее динамично развивающихся библиотек для анализа данных на Python.

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

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

Series – это маркированная одномерная структура данных, ее можно представить, как таблицу с одной строкой.

Создать Series можно так:

Столбец слева это индекс, справа — значения.

DataFrame – это двумерная маркированная структура. Идейно она очень похожа на обычную таблицу, что выражается в способе ее создания и работе с ее элементами.

Pandas может работать со следующими типами данных:

  • Табличные данные («плоские таблицы»), такие как SQL или Excel.
  • Упорядоченные и неупорядоченные временные ряды.
  • Произвольные матричные данные с метками строк и столбцов.
  • Другие формы представления статистических данных.

В будущем pandas планирует стать инструментом анализа и обработки данных, доступным для любого языка программирования.

Далее я расскажу как освоить pandas.

1.1. Прохождение серии уроков по pandas на сайте devpractice.ru

В самом начале автор рассказывает как установить pandas на разные платформы и затем переходит к описанию двух главных в библиотеке структур данных, Series и DataFrame.

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

1.2. Изучение статьи о pandas на сайте khashtamov.com

Достаточно объемная статья со множеством примеров и простым изложением. Отдельное упоминание статья заслуживает за то, что в ней приведен анализ временных рядов на примере акций Apple, что позволяет увидеть как на практике применяется библиотека и показывается работа с построением графиков с помощью библиотеки matplotlib, о которой речь пойдет ниже.

1.3. Изучение цикла статей о pandas на сайте pythonworld.ru

Не лишним будет изучить этот источник, т.к. там неплохо рассказывается о методе read_csv и не только.

1.4. Изучение официальной документации pandas

Документация написана на английском языке, но это не мешает эффективно изучить библиотеку. Если вы не знаете языка, тогда поможет онлайн-переводчик. В документации содержится всё, что необходимо знать о панде. Тем более написана она достаточно простым языком. Структуру Panel можно опустить, т.к. она в будущем будет удалена из pandas.

1.5. Чтение литературы: Маккинни — “Python и анализ данных»

Данная книга будет полезна не только для изучения pandas, в ней так же рассказывается о NumPy, matplotlib и многом другом. Единственное, что за основу взят Python 2.7, потому что большая часть научного сообщества на момент написания книги ещё не перешла на Python 3. Впрочем, если не считать немногих исключений, у вас не возникнет трудностей с исполнением при­веденного в книге кода, даже если работать с Python 3.7.

Книга покажется сложной для новичков, поэтому достаточно читать по 5-10 страниц в день.

Совет: При работе с pandas удобно использовать Jupyter Notebook. Это интерактивная среда для программирования на языке Python, которая позволяет объединить код, текст, графики, математические формулы и скомбинировать всё в одном отчете.

2. matplotlib

Библиотека matplotlib — самый популярный в Python инструмент для создания графиков и других способов визуализации двумерных данных.

Пакет поддерживает многие виды графиков и диаграмм:

  • Графики.
  • Диаграммы разброса.
  • Столбчатые диаграммы и гистограммы.
  • Круговые диаграммы.
  • Ствол-лист диаграммы.
  • Контурные графики.
  • Поля градиентов.
  • Спектральные диаграммы.

С помощью matplotlib можно делать и анимированные изображения.

Как изучать?

2.1. Прочитать интерактивный учебник “Научная графика в Python

Автор учебника Павел Шабанов старается описать библиотеку во всех подробностях. Даёт множество примеров и просто хорошо объясняет. Немного процитирую: “Создание рисунка в matplotlib схоже с рисованием в реальной жизни. Так художнику нужно взять основу (холст или бумагу), инструменты (кисти или карандаши), иметь представление о будущем рисунке (что именно он будет рисовать) и, наконец, выполнить всё это и нарисовать рисунок деталь за деталью.”

2.2. Изучить серию шпаргалок по matplotlib

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

2.3. Подробнее изучить pyplot

“Так как matplotlib организована иерархически, а наиболее простыми для понимания человеком являются самые высокоуровневые функции, то знакомство с matplotlib начинают с самого высокоуровневого интерфейса matplotlib.pyplot. Интерфейс matplotlib.pyplot. является набором команд и функций, которые делают синтаксис графических matploltib команд похожим на команды, используемые в среде MATLAB.” — позаимствовано из интерактивного учебника “Научная графика в Python”.

Этап 2.2. Продолжение процесса изучения Python

1. Прохождение курса на Stepik.org “Python: основы и применение”

По сути является продолжением курса «Программирование на Python», описанного в первом этапе. Задачи посложнее, но вполне подъёмные для тех кто прошел 1 этап. Автор отлично объясняет механизмы работы языка, в следствии чего приходит лучшее понимание процесса разработки. Если с прохождением курса возникнут сложности, советую посмотреть видео курс по Python из прошлого этапа.

В день достаточно уделять этому ресурсу 1 час.

Ссылка на курс: https://stepik.org/course/512/syllabus

2. Чтение литературы: Лутц — “Изучаем Python. 4 издание”

Думаю книга Лутца стала уже классикой, её рекомендуют почти все, кто когда то изучал Python. И это оправданно, данная книга полностью раскрывает философию Python и показывает возможности языка, которые вы можете узнать, только лишь в англоязычной документации. Почти на всех форумах книга “Изучаем Python” рекомендуется как пособие для тех, кто осваивает язык с нуля, однако я считаю, что она хорошо пойдет, тем кто уже освоил некоторые азы. Книга написана в 2011 году, но не потеряла актуальности и в 2018.

В день рекомендую читать по 15 страниц.

3. Решение задач в Pythontutor.ru

Если вы уже решили все задачи в интерактивном учебнике на первом этапе, можете пропустить данный пункт, если нет, продолжайте решение.

Заключение

Срок данного этапа составляет приблизительно 2-3 месяца. Но изучение pandas и matplotlib не ограничивается данным этапом и потребует дополнительного времени, потому что возможности библиотек очень обширны. Как говорится век живи — век учись.

💬 В комментариях задавайте вопросы. Посоветуйте свои книги и статьи по этой теме.

Переходите к следующей части, посвященной знакомству с техническими индикаторами и графиками в среде Jupyter.

Другие статьи из программы обучения: