18 полезных библиотек для анализа данных в Python


Оглавление (нажмите, чтобы открыть):

20 библиотек для Python разработчиков

Сегодня поговорим о самых известных библиотеках Python, которые должны быть в арсенале любого разработчика.

1. Requests. Самая известная HTTP библиотека, написанная Кеннетом Ритц. Должна быть в арсенале любого разработчика Python.

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

3. wxPython. Графический пользовательский интерфейс для Python. Может быть использован вместо Tkinter. Вам он понравится.

4. Pillow. Дружеская форма PIL (Python Imaging Library). Она более удобна для пользователей, чем PIL и просто необходима тем, кто работает с картинками.

5. SQLAlchemy. Библиотека с базой данных. Многие ее любят и многие ненавидят. Выбор стоит за вами.

6. BeautifulSoup. Несмотря на свою медлительность, эта XML и HTML библиотека может быть очень полезна для начинающих.

7. Twisted. Самый важный инструмент для любого разработчика сетевых приложений. Он имеет очень красивый интерфейс API и используется многими известными разработчиками Python.

8. NumPy. Как возможно забыть про эту важную библиотеку? Она предоставляет некоторые продвинутые математические функциональности для Python.

9. SciPy. Когда речь идет о NumPy, тогда мы вспоминаем о SciPy. Данная библиотека алгоритмов и математических инструментов для Python заставила многих ученых перейти с Ruby на Python.

10. matplotlib. Данная библиотека очень полезна для любого ученого, работающего с данными или любого дата-аналитика.

11. Pygame. Какой разработчик не любит играть в игры и колдовать над ними? Эта библиотека поможет вам достичь вашей цели в развитии 2d игры.

12. Pyglet. 3d анимация и создание игрового движка. С помощью него был сделан знаменитый порт Minecraft.

13. pyQT. Графический инструментарий для Python. Советуем его как второй выбор после WxPython для разработки GUI сценариев.

14. pyGtk. Очередная Python GUI библиотека. Это та самая библиотека, в которой создается знаменитый Bittorrent клиент.

15. Scapy. Анализатор пакетов для Python, сделанный при использовании Python.

16. pywin32. Библиотека для Питона, которая предоставляет некоторые полезные методы и классы для взаимодействия с Windows

17. nltk. Natural Language Toolkit. Очевидно, что большинство людей данный инструмент не используют, но данная библиотека достаточно обширна. Довольно полезная библиотека, если вы хотите работать со строками. Однако ее возможности гораздо обширней. Проверьте сами.

18. nose. Среда тестирования для Python. Она используется миллионами разработчиков Python и просто необходима тем, кто осуществляет пробные тестирования при программировании.

19. SymPy. SymPy может сделать алгебраическую оценку, дифференцировку, расширение, комплексные числа и т.д.

20. IPython. Не хватит слов, чтобы передать насколько полезен этот инструмент. Он может послужить заменой и расширить возможности стандартной командной оболочки операционной системы, особенно на Windows, и многое другое. Ни в коем случае не пропустите его.

Надеемся, данный пост оказался вам полезен. Если вы считаете, что какая-то важная библиотека Python была пропущена, пожалуйста, упомяните ее в комментариях, и мы обязательно включим ее в данную статью.

Программа «Python для анализа данных»

На данной программе вы познакомитесь с языком Python — одним из наиболее популярных современных языков программирования, который широко используется в анализе данных. Программа состоит из трех структурных частей:

I. Введение в Python. Вы научитесь программировать, даже если раньше этого никогда не делали, познакомитесь с базовыми возможностями языка Python, узнаете о его «подводных камнях» и начнёте использовать свои навыки в повседневной работе.
II. Обработка данных в Python. Работа с данными в Python немного похожа на использование систем электронных таблиц — только во много раз мощнее. Буквально одной командой можно выбрать нужные записи из таблицы по заданным критериям, сгруппировать их, вычислить агрегированные значения и визуализировать результат. И это только начало!
III. Сбор данных в Python. Не всегда данные доступны сразу в удобном для обработки виде: они могут быть разбросаны по разным сайтам и храниться в разных форматах. Мы обсудим, как извлекать данные с веб-страниц (веб-скреппинг) и как пользоваться массивами открытых данных, доступных в структурированных форматах (XML, JSON) через API.

Преподаватели

Full-stack разработчик, ведущий программист Medsenger.ru. Более 8 лет опыта разработки и преподавания курсов программирования для школьников и студентов.

Окончил факультета компьютерных наук НИУ ВШЭ.

Преподаватель кафедры высшей математики, программ «Анализ данных в социальных науках», «Математика и статистика» и «Основы программирования в Python».

Окончила бакалавриат НИУ ВШЭ по специальности «Политология».

Татьяна Рогович

Приглашенный преподаватель проекта Data Culture. Занимается проектной работой в области аналитики и визуализации данных с сентября 2015 года.

Окончила магистратуру Центрально-Европейского университета по специальности «Статистика и методология исследования».

Работала менеджером по организации работы СМИ на спортивных событиях крупнейшего масштаба (Олимпиада в Сочи 2014, Чемпионат мира по футболу 2020, Европейские игры в Минске 2020 и другие). Вице-председателем исследовательской группы по политическому поведению, Центрально-Европейский университет, 2015-2020. Ассистентом-исследователем на кафедре истории философии и логики, Томский государственный университет, 2012-2014. Маркетологом региональной сети магазинов товаров для дома, 2011-2012.
Область научных интересов: поведенческая экономика, экспериментальные исследования, восприятие визуальной информации, машинный анализ текстов.

Основные темы программы

  • Введение в Python. Синтаксис языка. Базовые типы данных: числа, строки, списки, словари, множества. Функции. Классы и объекты. Ввод-вывод. Обработка исключений
  • Введение в анализ табличных данных в Python. Пакет pandas. Объекты Series (последовательность) и DataFrame (таблица). Чтение-запись данных в различных форматах. Запросы к таблицам: выборка строк/столбцов по заданным критериям. Модификация элементов таблицы. Добавление строк/столбцов.
  • Продвинутые возможности pandas. Группировка и агрегирование. Объединение таблиц (различные виды join). Работа с временными рядами. Вычисления: скользящее среднее, кумулятивная сумма и т.д. Работа с пропусками (NA’s). Многомерные данные: мультииндексы. Операции stack-unstack. Построение сводных таблиц (pivot tables).
  • Визуализация данных в Python. Обзор библиотек: matplotlib, pandas, seaborn, plotly, bokeh. Базовые типы визуализаций: графики, столбчатые диаграммы, гистограммы, точечные диаграммы (scatter plots), ящики с усами. Комбинирование различных графических элементов. Построение интерактивных диаграмм с помощью plotly и bokeh.
  • Сбор и подготовка данных. Веб-скреппинг. Библиотека beautifulsoup. Работа с динамическими сайтами с помощью Selenium. Массовый скреппинг с помощью scrapy. Работа со структурироваными данными: JSON и XML. Открытые API.

Начальные требования

Законченное высшее или среднее специальное образование.

Расписание занятий

С 11 сентября по 20 ноября 2020 г.
Среда (19:00-22:00).

Анализ данных с помощью pandas. Часть 0: введение, jupyter (ipython)

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

Цель этого цикла статей — дать конкретные примеры использования pandas.

Быстрый тур в IPython Notebook

Будет полезным повторить это в интерактивном режиме, поэтому лучше установить ipython с помощью pip:

После чего можно запустить сеанс ipython просто написав:

После этого в браузере откроется сервер jupyter. Создадим Python 3 notebook.

Во-первых, запустим код из ячейки.

Помимо этой кнопки, можно запускать код из ячейки с помощью Ctrl+Enter.

Одна из самых полезных вещей в IPython notebook это автодополнение.

Попробуйте следующее: нажмите в ячейке сразу после read_csv( и нажмите Shift+Tab 4 раза, медленно. Посмотрите, что получится.

Вот что получается после 2 раз:

Хорошо, теперь попробуем автодополнение. Введите pd.r (первая буква функции) и посмотрите, какие варианты предлагаются.

Вы должны увидеть следующее:

Написание кода

Написание кода в ячейках абсолютно естественно.

Аналитик данных на Python

Освойте Python и делайте свою работу в несколько раз быстрее. Собирайте и обрабатывайте массивы данных, выполняйте сложные вычисления и стройте отчеты за минуты.

скидка 20% первым 20

набор на курс до 10 ноября

Записаться на курс или получить консультацию

Длительность 4 месяца

Онлайн в удобное время

Обучение на практике

Доступ к курсу навсегда

Курс идеально подойдет

Аналитик

Курс поможет вам автоматизировать рутинную работу с отчетами. Вы научитесь писать скрипт, который сам будет собирать и обрабатывать данные. Кроме этого, вы освоите способы презентации итоговой аналитики, получите навыки визуализации с помощью Matplotlib и Seaborn.

Digital-маркетолог

На курсе вы познакомитесь с ключевыми аналитическими библиотеками NumPy и Pandas, поработаете с API «Яндекс. Метрики» и Google Analytics, научитесь писать чат-боты и скрипты, которые будут выдавать готовый аудит-анализ.

Директор компании

Вы научитесь строить сквозную аналитику, автоматизируете отчеты из Google Analytics и «Яндекс.Метрики», сможете разгрузить себя и своих сотрудников для решения более важных задач.

Чему вы научитесь

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

  • Базовые знания языка Python.
  • Автоматизация отчетности.
  • Работа с аналитическими библиотеками NumPy и Pandas.
  • Парсинг открытых данных.
  • Глубокий конкурентный анализ во «ВКонтакте».
  • Работа с базами email-рассылки.
  • Построение модели машинного обучения.
  • Визуализация данных с помощью библиотек Matplotlib и Seaborn.

Записаться на курс скидка 20% первым 20 студентам

Программа курса

Программа курса содержит 14 основных блоков.

Настройка окружения и базовые знания языка Python.

Знакомство с ключевыми аналитическими библиотеками NumPy

Pandas Advanced. Составляем отчетность.

Визуализация с помощью Matplotlib и Seaborn.

Функции, файлы, базы данных.

API Google Analytics.

Парсинг сайтов на Python.

Введение в статистику. Интервальные оценки.

A/B-тестирование с помощью Python.

Кластеризация и сегментация.

Получите полную программу и индивидуальную консультацию

Преподаватели

Алексей Никушин основатель МатеМаркетинг, ведущей конференции для аналитиков

Егор Воронков старший аналитик Билайн

Максим Керемет аналитик данных X5 Retail Group

Как проходит обучение

Вы выполняете домашние задания и открываете доступ к новому уникальному контенту по теме. Достаточно выделить 3–5 часов в неделю.

Изучаете
тему

В курсе — полезные видеоуроки.

Выполняете домашнее задание

В том темпе, в котором вам удобно.

Общаетесь с наставником

Закрепляете знания и исправляете ошибки.

Защищаете дипломный проект

И дополняете им свое портфолио.

Резюме после прохождения

Аделина Ветрова Python-аналитик

Ожидаемая зарплата от 90 000

Python Язык программирования.

PyTorch Библиотека машинного обучения для языка Python.

NumPy Библиотека с открытым исходным кодом для языка программирования Python.

Pandas Программная библиотека на языке Python для обработки и анализа данных.

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

Jupyter Notebook Командная оболочка для интерактивных вычислений.

SQL Язык управления реляционными базами данных.

Ключевые навыки:

  • Преобразование данных в табличный вид с помощью API «Яндекс.Метрики».
  • Визуализация данных с помощью библиотек Matplotlib и Seaborn.
  • Подсчет ROI и LTV.
  • Работа с отчетами в API Google Analytics.
  • Beautiful Soup.
  • Парсинг веб-страниц.
  • Создание Telegram-ботов.

Диплом Skillbox

Подтверждает успешное прохождение курса «Аналитик данных на Python»

Аналитик данных на Python

Стоимость обучения

Скидка 20% первым 20

Стоимость обучения 50 000

3 250 Рассрочка без первого взноса

39 000 Для первых 20 студентов

Гарантия возврата денег в течение 14 дней

Запишитесь на курс

Дата начала: 10 ноября

Осталось: 15 мест

Мнения о курсе

Мария Жданова студентка курса «Аналитик данных на Python»

На курсе «Аналитик данных на Python» мне понравилось то, как спикер Максим Керемет преподносит информацию. Все, что он рассказывал, пригодилось в работе.

Алексей Семенов студент курса «Аналитик данных на Python»

Я прошел курс «Аналитик данных на Python», для себя отметил доступность, с которой спикеры рассказывают о сложных вещах. Уже применяю знания на практике.

Григорий Зинькевич студент курса «Аналитик данных на Python»

Я выбрал курс «Аналитик данных на Python», потому что мне нравится программирование и хочу работать в этом направлении.

Денис Калитин студент курса «Аналитик данных на Python»

Курс «Аналитик данных на Python» понадобился мне для работы. Вся информация нужная, а материалы подробные — пригодилось все. Спасибо Максиму Керемету.

О Skillbox

Максимально практическое обучение от лидеров digital-рынка. Курсы от компаний, работающих на реальных проектах.

После обучения вы можете трудоустроиться в эти компании или к партнёрам университета.

студентов учатся на наших курсах

студентов довольны преподавателями

выпускников получают карьерный рост

выпускников довольны курсом и результатом

Часто задаваемые вопросы

Я могу прийти на курс, если у меня нет опыта в программировании?

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

Есть возможность по ходу обучения задавать вопросы?

Конечно. У вас будет куратор в Telegram-чате, который поможет вам разобраться с любыми трудностями в процессе обучения. Обратную связь от преподавателя вы будете получать во время проверки домашних заданий в виде комментариев и полезных советов.

Смогу ли я совмещать курсы с работой?

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

Записаться на курс или получить консультацию

Появились вопросы по курсу?

Оставьте ваш номер телефона, и наш специалист свяжется с вами, чтобы дать подробную информацию.

г. Москва, метро Октябрьская,
Ленинский проспект, дом 6, строение 20

Знакомимся с анализом данных на 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

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

Мастер Йода рекомендует:  20 лучших эмуляторов iOS для Windows ПК в 2020 году

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

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

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

Анализ данных на Python — построение модели фондового рынка со Stocker

В Data Science легко увлечься разнообразием данных и бесплатными инструментами с открытым исходным кодом. Проведя немного времени с финансовой библиотекой quandl и библиотекой прогнозирования Prophet , я решил попробовать исследовать несколько простых курсов акций. Парочка дней и 1000 строк кода Python привели меня к полноценному инструменту анализа и прогнозирования рынка. Хотя я и недостаточно смелый (или глупый!) , чтобы применить его для инвестиций в настоящие акции, в процессе я узнал многое о Python, и в духе open-source хочу поделиться своими результатами и кодом с вами — может кому пригодится.

Введение

В этой статье будет показано, как использовать Stocker, инструмент для анализа и прогнозирования рынка, реализованный в виде класса Python. Название было изначально произвольным, но потом оказалось, что оно хорошо подходит для «исследователя рынка» («stock» (англ.) = «акция», прим.). Несколько раз я пытался одолеть классы, основу объектно-ориентированного программирования на Python, но, как и большинство разделов программирования, они не имели смысла, пока я только читал книги. Только когда я погрузился в реальный проект, в котором возникла проблема, которую я раньше не решал, лишний раз убедился, что практика > теория! Помимо рассмотрения Stocker, мы затронем некоторые важные темы, включая основы классов Python и аддитивных моделей. Для тех, кто хочет использовать Stocker, весь код можно найти в GitHub вместе с документацией. Программа специально разрабатывалась так, чтобы быть простой в использовании (даже для тех, кто не знаком с Python), и я рекомендую всем читающим статью опробовать ее.

Перейдем к возможностям Stocker!

Начало работы со Stocker

После установки необходимых библиотек первое, что нужно сделать — импортировать класс Stocker в сессию Python. Сделать это можно из интерактивного режима, или же в Jupyter Notebook, запущенного в каталоге со скриптом.

Теперь класс Stocker есть в нашей сессии, и мы можем использовать его для создания экземпляра класса. В Python экземпляры класса называются объектами, а акт создания объекта называют конструированием. Чтобы создать объект Stocker , нам нужно передать действительный идентификатор (stock ticker) , в нашем случае, ‘MSFT’ . Жирным шрифтом будем обозначать вывод программы.

Теперь у нас есть объект microsoft со всеми свойствами класса Stocker . Stocker построен на базе данных Quandl WIKI , которая дает нам доступ к более чем 3000 наборам данных рынков США с известными ежедневными ценами в течение многих лет ( полный список здесь ). В этом примере мы будем использовать акции Microsoft. Хотя эту компанию рассматривают как противников open-source, недавно она стала меняться и внушать оптимизм: Microsoft начали развивать сообщество с открытым исходным кодом (включая Python).

Преимущества Python

Класс в Python состоит из двух основных частей: полей и методов . Не вдаваясь в подробности, поля (или атрибуты ) — значения или данные, связанными либо с классом в целом, либо с конкретными экземплярами (объектами) класса. Методы — это функции, содержащиеся в классе, которые могут взаимодействовать с этими данными. Одно из полей объекта Stocker — это история рынка для конкретной компании, значение которого связывается с объектом при его создании. Чтобы проверить это, мы можем получить доступ к атрибуту и ​​присвоить его значение другой переменной:

Данные по акциям Microsoft

Преимущество класса Python заключается в том, что функции и данные, на которые они действуют, связаны с одним и тем же объектом. Мы можем использовать функцию объекта Stocker для построения всей истории курса:

По умолчанию значение, которое рисуется — это скорректированная цена закрытия, т.к. акции могут разделить («Stock split». Например, акция начнет стоит 1/2 от предыдущей цены, но и количество акций удвоится. Это делается, чтобы акции стали доступны для мелких инвесторов ).

Это довольно простой график, который мы легко бы нашли самостоятельно в поиске Google, но так приятно сделать это самому несколькими строками на Python! Функция plot_stock имеет ряд необязательных аргументов. По умолчанию этот метод отображает скорректированную цену закрытия за весь доступный промежуток времени, можно задавать диапазон дат, желаемую статистику для графика и тип графика. Например, если мы хотим сравнить ежедневное изменение цены со скорректированным объемом (количеством акций), то укажите их в вызове функции.

Обратите внимание, что ось y измеряется в процентах относительно среднего значения для статистики. Эта шкала необходима, потому что ежедневный объем торговли акциями находится в диапазоне в сотнен миллионов, а ежедневное изменение цены обычно составляет несколько долларов!

Ежедневное изменение цены предсказать невозможно

Преобразовав в процентное изменение, мы можем посмотреть на оба набора данных в аналогичном масштабе. На графике показано, что нет никакой корреляции между объемом торгов и ежедневным изменением цены. Это удивительно, поскольку мы могли ожидать, что больше акций будет продаваться в дни с большими изменениями цен, поскольку люди спешат воспользоваться преимуществами колебаний. Тем не менее, единственной тенденцией, по-видимому, является то, что объем торговли с течением времени уменьшается. 4 декабря 2020 года также произошло значительное снижение цены, и мы могли бы попытаться соотнести с новостями о Microsoft. Быстрый поиск новостей за 3 декабря выдает следующее:

Надежность этих источников вызывает вопросы

Разумеется, нет никаких признаков того, что на следующий день это приведет к крупнейшему падению акций Microsoft за 10 лет! Наоборот, у трейдера должен был возникнуть соблазн купить акции, если делать решения, основываясь только на новостях, потому что сделка с NFL (второй результат в выдаче) выглядит как положительная новость.

Построим графики на любой вкус

Используя plot_stock , мы можем исследовать любую из величин в данных в любом диапазоне дат и искать корреляции с реальными событиями (если они есть). На данный момент мы перейдем к одной из наиболее приятных частей Stocker: прогнозирование ненастоящих сделок!

Давайте притворимся, что однажды у нас хватило ума инвестировать в 100 акций Microsoft при первоначальном публичном размещении (IPO) компании. Насколько стали бы мы богаче?

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

Изменим временной промежуток и сравним полученный результат:

Удивительно, но на фондовом рынке можно потерять деньги!

Аддитивные модели

Аддитивные модели — мощный инструмент анализа и предсказания временных рядов, одного из наиболее распространенных типов данных. Концепция проста: временные ряды представляют как комбинацию некоторых шаблонов в разных временных масштабах и общий тренд. Мы знаем, что тренд для акций Microsoft — постоянный рост, но также могут быть закономерности на ежегодной или ежедневной основе, такие как рост каждый вторник, что выгодно знать инвестору. Prophet — потрясающая библиотека разработанная Facebook, для анализа временных рядов с ежедневными наблюдениями (например, цены акций) ( “prophet” (англ.) = “пророк”, прим. ). Stocker делает моделирование с Prophet под капотом, остается вызвать метод для создания и проверки модели:

Аддитивная модель сглаживает шум в данных, поэтому смоделированная линия не совпадает с наблюдениями. Модели Prophet также вычисляют неопределенность, естественную часть моделирования, поскольку никогда нельзя быть уверенным в прогнозах при работе с колебаниями реальных процессов в жизни. Prophet модель способна делать прогнозы на будущее, но пока мы больше озабочены прошлым. Обратите внимание, что этот вызов метода возвратил два объекта, модель и некоторые данные, которые мы присвоили переменным. Используем эти переменные для построения временных рядов.

Общая тенденция — рост в последние три года (первый график). Также заметна годовая зависимость (нижний график), когда цены снижаются в сентябре и октябре и достигают пика в ноябре и январе. По мере уменьшения масштаба времени данные становятся более шумными. В течение типичного месяца сигнала больше, чем шума ! Если мы предполагаем существование недельной зависимости, добавим ее в модель, изменив атрибут weekly_seasonality объекта Stocker :

Значение по умолчанию для weekly_seasonality — False, но мы изменили значение, чтобы включить «недельную сезонность» в нашу модель. Затем сделаем еще один вызов create_prophet_model и отобразим полученные компоненты. Ниже приведена зависимость новой модели.

У меня не получилось заставить график выглядеть хорошо

Мы можем игнорировать выходные дни, потому что цена меняется только в течение рабочей недели (на самом деле также незначительно меняется во время after-hours trading (OTC), но это не влияет на наш анализ). К сожалению, на недельном графике нелья выделить тенденцию, поэтому отключим недельную сезонность. Такое поведение ожидаемо: по мере уменьшения масштаба времени шум начинает подавлять сигнал. На ежедневной основе движение акций непредсказуемо , тренды видны только за счет увеличения масштаба до годового. Надеюсь, это послужит напоминанием о том, почему не стоит играть на ежедневных колебаниях курса!

Контрольные точки

Попросту говоря, контрольные точки возникают, когда временные ряды меняют направление движения от увеличения к уменьшению или наоборот (они расположены там, где наблюдается наибольшее изменение скорости временного ряда) . Эти места чрезвычайно важны, потому что продавать акции важно на пике цены, а покупать — на локальном минимуме, что максимизирует выгоду. Определение причин, по которым возникают эти точки, поможет прогнозировать будущие колебания стоимости акций. Stocker умеет автоматически находить 10 самых значимых контрольных точек.

Контрольные точки имеют тенденцию находиться на пиках и провалах в ценах акций. «Пророк» находит точки смены только на первых 80% данных, но эти результаты все равно полезны, поскольку их можно сопоставить с событиями и новостями. Мы могли бы повторить то, что делали ранее — вручную искать новости Google, происходившие в эти даты. Но было бы предпочтительнее, если бы Stocker сделал это вместо нас. Возможно, вы знаете инструмент Google Search Trends , который показывает относительную популярность поискового запроса с течением времени в результатах поиска Google. Stocker автоматически извлекает информацию об указанном запросе, и выводит результат поверх исходных данных. Чтобы найти и рассчитать частоту поисковых запросов, модифицируем предыдущий вызов функции:

Помимо графического отображения относительной частоты поиска, Stocker отображает близкие связанные и набирающие популярность для диапазона дат графика запросы. На графике ось y нормализуется между 0 и 1, деля значения по их максимумам, позволяя сравнивать две переменные с разными шкалами. Из рисунка, похоже, следует, что корреляции между поисками «прибыль Microsoft» и ценой акций Microsoft нет.

Зависимость: прямая, обратная или случайная?

Если бы мы нашли корреляцию, все равно возник вопрос о причинной связи . Мы не знали бы, влияют ли поисковые запросы или новости на изменение акций, или наоборот, изменение цены вызвало интерес. Возможно, найдется полезная информация, но есть также много случайных корреляций. (Для осознания таких случайных отношений проверьте юмористические ложные корреляции ). Проверьте несколько запросов и проверьте, получается ли найти интересные зависимости.

данных Python и Stocker» w >

Похоже, что уменьшение количества поисковых запросов «Microsoft Office» приводит к росту цен на акции. Кто-то должен сказать Microsoft об этом.

Предсказания цены акций на Python

Мы изучили только первую половину возможностей Stocker. Вторая половина предназначена для прогнозирования будущей цены акций. Хотя это может быть бесполезным упражнением (или, по крайней мере, не окупающимся по деньгам), здесь еще есть чему поучиться!

О предсказании — во второй части статьи . Или вы можете разобраться самостоятельно (см. подробную документацию ). Для поддержания интереса оставлю вам еще одну картинку:

Хотя все возможности Stocker уже давно общедоступны и известны, процесс создания этого инструмента для меня был приятным и, что более важно, дал мне больше знаний о Data Science, Python и фондовом рынке, чем обучающие курсы . Мы живем в невероятном мире свободных знаний, где каждый может узнать о программировании или даже о современных областях, таких как машинное обучение, без лишних формальностей. Если у вас есть идея для проекта, но вы считаете, что знаний для ее реализации недостаточно, или что она уже была реализована раньше — не позволяйте этому останавливать вас. Ваше решение может оказаться лучшим, и даже если окажется не так, вы все равно узнаете гораздо больше, чем если бы вы никогда не попробовали!

Как всегда, я приветствую конструктивную критику и обратную связь (en). Меня можно найти в Twitter на @koehrsen_will .

Больше статей о машинном обучении на Python:

Python в анализе данных

Принимать решения без данных это как играть в русскую рулетку: повезет – не повезет. Поэтому данные нужно копить с первого дня жизни бизнеса. Данные это сырье для бизнеса, и по началу они будут помогать принимать решения без особых затрат. Но когда количество данных перевалит за 1 Tb, бизнесу станет сложнее быстро выжимать фичи по векторам на регулярной основе. Помочь может визуализация данных. Имея в багаже математическую базу и возможности Python при использовании библиотек matplotlib, seaborn и plotly, можно покрыть большинство потребностей по визуализации графиков для руководства и для принятия решений.

Существует множество инструментов для визуализации данных: R, Python, JS, Matlab, Scala и Java. R это больше язык для исследователей и студентов, поэтому у него на данный момент больше полезных библиотек для визуализации, чем у Python. Но Python лучше для дальнейшей интеграции разработки.

На больших проектах, где положительные изменения дают 1% sns.set() , посмотрим на примере:

import matplotlib matplotlib.use(‘TkAgg’) import numpy as np from matplotlib import pyplot as plt import seaborn as sns; sns.set() norm_data = np.random.normal(size = 1000, loc = 0, scale = 1) plt.hist(norm_data) plt.show()

Мы построили наш первый график, используя Python. Конечно, хочется быстрее перейти от работы со списками к работе с массивами значений. Но для начала немного освежим теорию математической статистики:

Нулевая гипотеза всегда консервативна (проще проверяется), а альтернативная гипотеза это ненормальное распределение. В первую очередь проверяется нормальность данных, так как для среднего и стандартного отклонения нормальное распределение может быть лишь одно, ненормальных распределений возможно бесконечное количество. Проверка нормальности возможна тестом Shapiro-Wilk, который проверяет нулевую гипотезу о происхождении данных из нормального распределения.

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

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

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

  • Среднее арифметическое значение в данных. Идея в том, что если взять любое типичное значение из набора данных, оно будет похоже на среднее значение. Не самый надежный способ.
  • Медиана. В отличии от среднего арифметического, все значения сортируются в порядке возрастания и в качестве среднего значения берется то, что окажется в середине списка. Считается более надежным подходом. Если в списке четное количество значений, то высчитывается среднее между двумя значениями из центра отсортированного набора данных.
  • Мода. Значение, которое можно встретить в данных чаще остальных. Это менее среднее значение, чем два предыдущих. Скорее, это наиболее тяжеловесный фактор, который влияет на среднее значение в данных.

import matplotlib matplotlib.use(‘TkAgg’) import scipy.stats as stats from matplotlib import pyplot x = stats.norm.rvs(loc=5, scale=3, size=543) print (stats.shapiro(x)) pyplot.hist(x) pyplot.show()

Я осознанно не использую seed , так как чем больше вариативность полученных вами результатов, тем лучше. У меня возвращено 2 значения: значение статистики теста, и связанное с ним значение p-value, в моем случае получилось 0.011658577248454094. А так как 0.0116 print (stats.anderson(x)) , проверяем еще раз, что данные в выборке более менее нормально распределены. За тестом Андерсона Дарлинга часто используют w^2 Мизеса. Результат можно проверить даже визуально:

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

Используем для этого ANOVA (дисперсионный анализ) из библиотеки Scipy, командой stats.f_oneway . Нулевая гипотеза ANOVA предполагает, что мат. ожидания совпадают. Если t-критерий Стьюдента используется для сравнения среднего значения в двух независимых или зависимых группах, то f-критерий проверяет, есть ли вообще разница. Можно использовать для большего количества выборок, чем 2. Разумеется, ANOVA не является f-тестом в полной мере, это модель регрессии и считается обобщенной линейной моделью (GLM). ANOVA используется для сравнения среднего значения какого-то признака в независимых группах.

import matplotlib matplotlib.use(‘TkAgg’) import scipy.stats as stats a = [2,3,1,4,3,4,2,4,-1,32,12,53,2,2,3,2.3,2,4.2,3,32,1] b = [3,4,-1,3,4,43,4,14,2.3,1,3,2.3,12,42,2.4,3,4,1,4,1,2] print (stats.f_oneway(a,b))

Получаем F-статистику F_onewayResult(statistic=0.0386380063725391, pvalue=0.8451628704190369) , что говорит нам, больше ли дисперсия между группами, чем дисперсия внутри групп, и вычисляет вероятность наблюдения этого коэффициента дисперсии, используя F-распределение. Конечно, для научных публикаций данных недостаточно, нет степеней свободы. Но заветный P-value мы получили и теперь знаем, что раз 0.8451628704190369 > 0.05, то работа продажников явно завязана не только на тех данных, что у нас имеются. У нас отказ от нулевой гипотезы, так как данные не выглядят нормально. Нулевая гипотеза a = b, альтернативная a ≠ b. На самом деле, если нет желания разбираться с кучей критериев, достаточно освоить ANOVA и Bootstrap, так как все укладывается в общие линейные модели.

Сравним средние двух выборок с помощью T-test. Для T-test нам нужны среднее выборки, ее размер и отклонение. Мы хотим узнать, есть ли различия в двух группах данных, пусть это будут результаты A/B теста для туториалов в мобильном приложении. Для этого нужно интерпретировать статистическое значение в двустороннем тесте с примерно нормальным распределением, что означает, что нулевая гипотеза может быть отвергнута, когда средние значения двух выборок слишком отличаются. В R мы использовали функцию t.test() для простого t-теста Стьюдента, в Python мы пойдем более комплексным путем. Можно выполнить как односторонний, так и двусторонний T-test в Python. Если у вас много шума в данных, не забудьте сделать дисперсию. Стьюдента для независимых выборок считают с равными дисперсиями. Честно говоря, T-test самый консервативный из всех, ему нужна полная гомогенность выборок (50 на 50), и строго нормальное распределение. Для тестов бинарных или непрерывных метрик не подойдет.

У двустороннего теста и p-value получится в два раза больше, чем у одностороннего, поэтому двусторонний тест имеет более строгие критерии для отклонения нулевой гипотезы. Гипотетически, из двустороннего p-value можно получить одностороннее, но при правильно проведенном тесте не должно возникнуть такой необходимости. При двустороннем тесте мы делим p-value 0.05 на два, и отдаем по 0.025 на положительный и отрицательный концы распределения. При одностороннем тесте весь p-value 0.05 располагается в одном конце распределения. Так как второй конец распределения игнорируется, то есть вероятность ошибки: создав новый туториал, можно протестировать односторонним тестом, лучше ли новый туториал предыдущего. Но информация о том, хуже ли новый туториал предыдущего, будет проигнорирована. Но если новый туториал рассчитан на другую аудиторию и мы точно знаем, что он не может быть хуже, то односторонний тест вам подходит и даст бОльшую точность.

Мастер Йода рекомендует:  Введение в связанные списки

Вводные для следующего примера: нулевая гипотеза что мат. ожидания для двух групп равны, дисперсии равны. Данные представляют финансовые результаты двух разных интернет-магазинов схожей тематики.

import matplotlib matplotlib.use(‘TkAgg’) from scipy import stats a = [742,148,423,424,122,432,-1,232,243,332,213] b = [-1,3,4,2,1,3,2,4,1,2] print (stats.ttest_ind(a,b))

Результаты завязаны на проблеме Беренса-Фишера, так как точного решения не существует, но вероятность позволяет нам сделать вывод. Если сделать поправку на то, что при маленькой выборке никак не сгруппированных данных у нас большая дисперсия (проверяем дисперсию командой print(np.var(a)) ), то качество данных можно поставить под сомнение. Если данные не распределены нормально, нужен критерий Манна-Уитни, также известный как Критерий Уилкоксона. Выборка у нас небольшая, поэтому Манна-Уитни вполне подойдет, ранги не будут сильно пересекаться.

import matplotlib matplotlib.use(‘TkAgg’) from scipy import stats a = [742, 148, 423, 424, 122, 432, -1, 232, 243, 332, 213] b = [-1, 3, 4, 2, 1, 3, 2, 4, 1, 2] u, p_value = stats.mannwhitneyu(a, b) print(«two-sample wilcoxon-test», p_value)

P-value стал 0.0007438622219910575. Сравнивать выборки можно и визуально:

import matplotlib matplotlib.use(‘TkAgg’) import numpy as np from scipy.stats import ttest_ind import matplotlib.pyplot as plt a = np.random.normal(loc=0,scale=24,size=4454) b = np.random.normal(loc=-1,scale=1,size=7643) print(ttest_ind(a,b)) plt.hist(a, bins=24, color=’g’, alpha=0.75) plt.hist(b, bins=24, color=’y’, alpha=0.55) plt.show()

Теперь рассмотрим двусторонний тест для нулевой гипотезы о том, что ожидаемое среднее значение одной выборки независимых наблюдений равно среднему значению другой. Аспект «двусторонний» означает, что мы рассматриваем верхнюю и нижнюю границы распределения совокупности данных. Стандартные отклонения должны быть одинаковыми.

import matplotlib matplotlib.use(‘TkAgg’) from scipy import stats from scipy import stats a = stats.norm.rvs(loc = 5,scale = 10,size = 23000) b = stats.norm.rvs(loc = 5,scale = 10,size = 23425) print stats.ttest_ind(a,b)

Получаем statistic=-0.7043486133916781, pvalue=0.4812192321148787, что намного больше 0,05. А так как р > 0.05 мы считаем маловероятной ошибкой, а р

График выше прекрасно подходит для визуального сравнения двух выборок. Доверительный интервал находится между 5 и 95 процентым квантилем, 90% доверительный интервал это двусторонний критерий между 5 и 95.

import matplotlib matplotlib.use(‘TkAgg’) import matplotlib.pyplot as plt import seaborn as sns import pandas as pd import numpy as np plt.style.use(‘ ]); plt.show()

Представленные выше графики достаточно стандартны и вы неоднократно их строили или, по крайней мере, видели. А вот следующий график, Jointplot, уже куда интереснее. Он совмещает в себе гистограммы по x и y, и включает типичный график рассеяния. Получается своеобразный куб из гистограмм.

import matplotlib matplotlib.use(‘TkAgg’) import matplotlib.pyplot as plt import seaborn as sns import pandas as pd import numpy as np plt.style.use(‘ , data, kind=’kde’); plt.show()

Получилось! Далее построим диаграмму рассеивания.

import matplotlib matplotlib.use(‘TkAgg’) import matplotlib.pyplot as plt import numpy as np a = np.random.rand(20) b = [3, 4, 3.4, 6, 7, 8, 9, 10, 4, 0.3, 4.2, 4, 23, 3, 33, 3, 1, 4, 0.1, 4.2] colors = np.random.rand(20) plt.scatter(a, b, c=colors, s=100, alpha=0.65, marker=(5, 0)) plt.show()

График интересен тем, что полученные рассеивающиеся паттерны позволяют увидеть разные типы корреляции. Стремится с правый верхний угол — хорошая тенденция, расположилось горизонтально — нейтральная тенденция, стремится в левый верхний угол — негативная тенденция.

И Box Plot, куда же без него. Работает с группой из минимум пяти чисел: минимум, первый квартиль, медиана, третий квартиль и максимум. Усы идут от каждого квартиля до минимума или максимума.

import matplotlib matplotlib.use(‘TkAgg’) import matplotlib.pyplot as plt import seaborn as sns import pandas as pd b = [1, 2, 3, 4, 3.4, 6, 7, 8, 9, 8, 4, 0.3, 4.2, 14, 21, 1, -8] df = pd.DataFrame(b) sns.boxplot(data=df) plt.show()

А теперь немного 3D, бизнес такое любит:

import matplotlib matplotlib.use(‘TkAgg’) import matplotlib.pyplot as plt import numpy as np from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D x = np.arange(-2, 5, 0.85) xlen = len(x) y = np.arange(-5, 2, 0.25) ylen = len(y) x, y = np.meshgr , linew >

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

26 комментариев

Существует ли специфика анализа данных для финтеха?

Банкинг это P&L бизнес, и задачи все идут по теме прибыли и убытков. У финтеха данных много, но данные всегда очень грязные и обрывочные. Но можно партнериться к другими банками для обмена данными (с учетом защиты персональных данных) и телекомами. Это дает некоторые очевидные преимущества: например, чем старше сим-карта клиента, тем больше шанс выдачи кредита.

Задачу для анализа всегда ставит бизнес, и постановка задачи зачастую довольно сложная. Начиная от очевидных хотелок про определение оттока физических лиц (в России банкам очень выгодно, когда у клиента есть дебетовый продукт, на этом банк хорошо зарабатывает), заканчивая психотипированием. Почти наверняка будут задачи про уменьшение универсальности, персонализацию предложения каждому клиенту. Даже в рамках сегмента будут неоптимальные соотношения предложения/ожидания для клиентов на разных концах выборки. Поэтому всегда будут задачи по построению up-sale и cross-sale исходя из соотношения трат на негативные (аренда, коммуналка, штрафы) и позитивные (новый гардероб, походы в кино, цирк, горы).

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

Вторая часть задач про маркетинг в Интернете. Выкатывать рекламу на всех пользователей неэффективно, качество лидов по такой рекламе низкое, у банков будет много отказов на выдачу кредита + неэффективные предложения клиентам, и реклама не окупится. Поэтому огромное внимания уделяется таргетингу. Это классический рекомендательный контент на точках интереса (заправки, ТЦ, аэропорты, университеты), для которого понадобится копить события (JSON), сжимать в батчи и отправлять по https на ваши веб-сервера. Дальше брать ширину и долготу, учесть искажения на полюсах от проекции Меркатора и переходы времени по Гринвичу, «рисовать» гексагон или квадрат для определения области нахождения пользователя. Определять по КЛАДРу, ФИАСу, ISO 3166 или GeoNames, где пользователь находится и что есть вокруг, и после этого вступает в дело рекомендательная система.

Примерно такие задачи будут первостепенны. Следующий шаг это R, Zeppelin, Presto, Python.

Здравствуйте, благодарю за статью. Подскажите по критерию для следующей ситуации: делаю своего рода карточную сортировку на 20 админах, даю список пунктов меню и прошу выбрать те, которые им понятны и нужны в меню. Есть ли способы это подсчитать?

Я так понимаю, на выходе у вас бинарные данные 1 или 0, тогда нужно подсчитать согласованность. Я бы начал с критерия Стюарта-Максвелла, потом Q-критерий Кохрена, и критерий маргинальной однородности. Но только при условии, что у вас связанные выборки (повторное измерение).

У Q-критерия Кохрана нулевая гипотеза это пропорции «успешных» результатов одинаковы во всех группах. Альтернативная гипотеза это хотя бы одна группа имеет отличия в пропорциях. Нулевая гипотеза отклоняется, когда вычисленное критическое значение Q больше критического значения хи-квадрата. При отклонении нулевой гипотезы выполните парные контрольные Q-тесты Кохрана для выявления отличий.

В зависимости от данных, можно еще обратиться к хи-квадрату Пирсона. Вот простой пример: мы подкидываем монетку 100 раз, и получаем 45 орлов и 55 решек. Ожидаемое 50 на 50, это будет нулевая гипотеза. У хи-квадрата принимается или отклоняется нулевая гипотеза по степеням свободы (df), которые можно подсмотреть в готовых табличках. У нас две стороны монетки, поэтому из 2 мы вычитаем 1 и получаем одну степень свободы. Далее выбираем 0.05 (95%), и получаем по таблице значение 3.841. Далее немного математики, для отклонения нулевой гипотезы нужно получить значение выше 3.841.

Считаем так:
(55 — 50)² / 50 = 25 / 50
(45 — 50)² / 50 = 25 / 50
50/50 = 1
у нас одна степень свободы, и полученное значение 1 (34 — 50)² / 50 = 256 / 50
(66 — 50)² / 50 = 256 / 50
512 / 50 = 10.24
10.24 > 3.841, мы отклоняем нулевую гипотезу H0, наши данные статистически значимы.

Совет подойдет для диапазона значений от 0 до 1? Могу ли с результатом от критерия кохрена понять, достаточной статистической значимостью считать, что в генеральной совокупности переменная распределена по аналогии с моей выборкой?

Если известен размер генеральной совокупности, то надо сравнить вашу выборку и имеющуюся выборку из генеральной совокупности. Это Хи-квадрат или точный критерий Фишера.

Не могли бы привести пример классического процесса проверки а/б теста?

Берем данные. У нас есть набор данных с параметрами конверсии до участия дизайнера в проработке лендинга и после, парная выборка. На первый взгляд надо использовать парный t-test, достаточно рассмотреть разность. Но самое первое это проверка на выбросы:

import matplotlib matplotlib.use(‘TkAgg’) import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv(«Downloads/testData.csv») df[[‘Manager_design’, ‘Designers_design’]].plot(kind=’box’) print (df.head()) plt.show(‘boxplot_outliers.png’)

По box-plot видно, что в нашем наборе данных отсутствуют какие-либо существенные выбросы. Следующий шаг это проверка распределения. Для двух зависимых выборок необходимо провести проверку нормальности на различия между двумя наборами данных. Для этого можно использовать гистограмму, Q-Q plot, или статистические тесты.

df = pd.read_csv(«Downloads/testData.csv») print (df.head()) df[‘final_design’] = df[‘Manager_design’] — df[‘Designers_design’] plt.show(df[‘final_design’].plot(kind=’hist’))

Видим, что распределение нормальное. Для надежности посмотрим на результаты теста Шапиро-Вилка на нормальность print (stats.shapiro(df[‘final_design’])) . Получаем W = 0.9910880327224731 и P-value = 0.1491156369447708. Распределение все же нормальное, так как результаты теста незначительные. Если бы распределение было ненормальное, мы перешли бы на тест Вилкоксона.

Далее переходим к парному T-test. Его результаты statistic=-8.062787757694716, pvalue=3.5364610751401186e-14. Полученные данные являются статистически значимыми. Можно отвергнуть нулевую гипотезу в поддержку альтернативы. Вмешательство дизайнера в процесс проработки лендинга имело влияние, в данном случае позитивное.

print (stats.ttest_rel(df[‘Manager_design’], df[‘Designers_design’]))

Строгой нормальности обычно не нужно, а тесты для проверки нормальности достаточно строгие. Надо сделать ремарку, T-test’ов много разных.

Спасибо, самое простое объяснение, что я видел в рунете)) но, честно говоря, я рассчитывал на ответ про сравнение множества когорот…

Тогда вам нужен тест ANOVA (почти как t-test) для проверки данных в целом, поиска аномальных активностей. С t-test у него общего регрессионная модель (GLM). Для доверия результатам теста надо: однородность дисперсии, нормальность данных, равное количество наблюдений в каждой группе и независимость наблюдений. Если кол-во наблюдений в группах значительно разнится, то нужно использовать Kruskal-Wallis H-test или Welch’s ANOVA.

Вот данные. Мы хотим сравнить средние значения 3+ выборок с помощью F-распределения. Будем использовать stats.f_oneway() .

import matplotlib matplotlib.use(‘TkAgg’) import pandas as pd import scipy.stats as stats df = pd.read_csv(«/Downloads/testData2.csv») iOS = df.iOS.dropna() Andro >

Получаем F_onewayResult(statistic=7.3488433965696975, pvalue=0.000674137267723654). В качестве альтернативы можно было использовать fligner-killeen test, он даже лучше.

Спасибо! Но ведь надо перед этим проверить данные? именно те что в табличной форме импортированы.

objects = pd.read_csv(‘folder/testData2.csv’, delimiter=’,’, header = 0, index_col=False) print (objects.head())

Да, надо. Узнать количество строк можно командой print (len(objects)) , количество столбцов print (objects.shape) , типы данных print (objects.dtypes) .
Далее идет описательная статистика, команда print (objects.describe(include=»all»)) . Получаем описание в рамках порядковой (данные для сравнения), количественной (числа) и номинальной шкале (числа не для сравнения).

std это стандартное отклонение (корень из дисперсии), mean это среднее, 50% (медиана) это квантиль, 25% и 50% это квартили. Смотрим на данные и ищем аномалии.

Еще нужно смотреть плотность данных, тут поможет гистограмма на примере колонки Windows

matplotlib.style.use(‘ggplot’) objects[‘Windows’].hist(); plt.show()

Видим выбросы справа. И это критично, как и колокообразная форма (так как наблюдений больше 150). Не критичное это отклонения от симметрии.

Спасибо, можно уточнить, из чего складывается этот t-test, какой у него принцип, почему я должен ему доверять?

Давайте опять на примере: у нас есть зависимые выборки, данные a/b теста до и после теста посадочной страницы. Берем t-критерий Стьюдента, также нужно найти число степеней свободы df, и взять за основу для принятия решения критическое значение t-критерия Стьюдента (0.05) с учетом степеней свободы df. Нулевая гипотеза: средние значения двух выборок равны. Для отклонения этой гипотезы значение t-критерия должно быть равно или больше 0.05, тогда считаем, что можно брать в расчет результаты a/b теста.

Проверяем данные на нормальность:

import matplotlib matplotlib.use(‘TkAgg’) import pandas as pd import numpy as np x = np.array([5, 15, 25, 35, 45, 55]) y = np.array([5, 20, 14, 32, 22, 38]) data = <'manager_data': x, 'with_v ]].describe())

Данные можно считать нормальными, так как mean и 50% очень похожи. Теперь смотрим на разность каждой пары значений по строкам:

diff = host_df[‘manager_data’] — host_df[‘with_video’] print (diff)

Вычисляем среднее разностей:

mean_diff = sum(diff) / len(host_df) print (mean_diff)

Стандартное отклонение разностей от среднего:

std_diff = diff.std() print (std_diff)

И считаем долгожданный t-критерий Стьюдента:

tstud = mean_diff / (std_diff / np.sqrt(len(host_df))) print (tstud)

Получаем значение t-критерия Стьюдента = 1,83, которое при числе степеней свободы df 6-1 = 5 и уровне значимости 0,05 надо сравнить со значением из таблицы: 2,57. Полученное значение 1,83 ниже критического 2,57, мы принимаем нулевую гипотезу. Статистически значимых различий до и после проведения теста нет.

И проверим правильность подсчета:

Получается что p-value это вероятность правильного решения, но ведь даже ошибка в пяти случаях из ста это могут быть миллионы долларов, или 5 убитых пациентов, неужели все полагаются на 5% допуска ошибки без дополнительных способов проверки?

Если полученное значение ниже 0.05 мы отклоняем H0 гипотезу и считаем, что разница является статистически значимой. Но на p-value влияет множество выбросов из данных, поэтому часто используют оценку p-value с помощью bootstrap. И тогда возможна ситуация, когда полученные p-value сильно выше 0.05. Но если провести bootstrap для p-value и оценить его 50 квантиль (медиана), то он может быть равен p

Здравствуйте, у меня есть множество наблюдений в разных группах, по каким принципам принято полученные наблюдения раскидывать по когортам?

Предположим, что наблюдения схожие: тогда можно использовать иерархический кластерный анализ, он как раз разбивает объекты на группы. Кластер это попросту скопление объектов, близких по своим свойствам. Близость свойств между объектами определяют разными алгоритмами, обычно это евклидово расстояние или block. Евклидово позволяет делать большое расстояние гигантским, так как различия возводятся в квадрат. Block не возводит в квадрат, и большие различия получаются менее значимы.

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

import matplotlib matplotlib.use(‘TkAgg’) import pandas as pd import matplotlib.pyplot as plt import scipy.cluster.hierarchy as sch objects = pd.read_csv(‘/Downloads/data3.csv’, delimiter=’,’, index_col=False) print (objects.head()) print objects.shape dendrogram = sch.dendrogram(sch.linkage(objects, method=’ward’)) plt.show()

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

Самый простой и не самый правильный способ: умозрительно прикинуть минимально ожидаемый эффект, взять константы мощности и значимость эксперимента, и дальше веб-сервисы вам скажут нужный объем выборки для теста с распределением 50%/50%.

Допустим, базовая конверсия (с1) = 4%. Лифт, который мы хотим (lift) = 8%. Эти же цифры вводим в калькулятор.
И сразу считаем новую конверсию: 0.04 * (1 + 0.08) = 4.3%

Вот пример для R:

power.prop.test(p1=.04, p2=.08, sig.level=.05, power=.8, alternative = «two.sided»)

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

Посложнее: в общем случае это ваша текущая конверсия (до начала теста), ожидаемый рост конверсии (например, экспертно считаем что конверсия должна подскочить на 20%), p-value (вероятность ошибки). При этом почти всегда берут 5% p-value и 80% мощность.

Za :
p-value 5%
2-sided 1.96
1-sided 1.65

Либо
p-value 1%
2-sided 2.58
1-sided 2.33

И Z1−β:
Мощность: 80% (Z1−β = 0.84), 85% (Z1−β = 1.04), 90% (Z1−β = 1.28), 95% (Z1−β = 1.64)

Вот одна из формул из моей практики, подразумеваются равные выборки. Сначала считаем дисперсию, текущая конверсия 50%, и ожидаемая 50% + (20% / 2) = 60%.
0.5(1 – 0.5) + 0.6(1 – 0.6) = 0.25 + 0.24 = 0.49.

Теперь берем уровень достоверности 95%, это дает нам значения Za = 1,96.
1. 0.49/0.01 = 49 * 2 = 98
2. (1.96 + 0.8)² = 7.6176
3. Объем выборки = 98 * 7.6176 = 746 (делим на контрольную и тестируемую выборки)

Посмотрите еще мои ответы тут и тут.

Как посоветуете рассчитывать объем выборки для подтверждения значимости эффекта, если я провожу A/B тест, и надо точно знать, что вариант B будет точно не хуже, чем А?

Типичная задача про оптимизацию затрат, где конверсия не будет хуже изначальной. Нужно искать такой размер выборки, при котором мы уверены, что конверсия не упала на заданное число. Это Non-Inferiority A/B Tests.

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

>> У меня возвращено 2 значения: статистика хи-квадрата и связанное с ним значение p-value, в моем случае получилось 0.011658577248454094.

Как связана статистика хи-квадрат с тестом Шапиро-Уилка?

>> А так как 0.0116

Как связана статистика хи-квадрат с тестом Шапиро-Уилка?

С помощью Шапиро Уилко я отвечаю на вопрос, является ли выборка нормально распределенной. Классика: р-value меньше 0.05, буду использовать непараметрические методы, больше 0.05 — параметрические. А критерий хи-квадрата помогает понять, являются ли наблюдения в двух группах независимыми друг от друга. Можно в качестве альтернативы взять Краскела-Уоллиса. По результатам, допустим, можно выбрать t-test для понимания, был ли завод более эффективен в 2020 году чем в 2010 году.

Нулевая гипотеза теста H0: X

N(mu, sigma). Ваше p-значение получилось меньше альфы, не значит ли это, что нулевая гипотеза отклоняется в пользу альтернативной, что распределение данных существенно отличается от нормального?

Все верно. Так как полученное p-value меньше критического значения, с вероятностью 95% отклоняем нулевую гипотезу о равенстве средних, это так. Если p-value ≤ α: данные не соответствуют нормальному распределению и мы отклоняем H0. Любой низкой p-value дает нам основания отклонить нулевую гипотезу и считать, что есть разница между тестовой и контрольной группами.

Значение p-value > α: не отклоняем нулевую гипотезу, так как значение p больше, чем уровень значимости. При этом мы не можем сделать вывод, что данные не соответствуют нормальному распределению. И нельзя сделать вывод, что данные соответствуют нормальному распределению.

Но как в анекдоте: есть нюанс. Тест проверяет нулевую гипотезу, что наша выборка была извлечена из генеральной совокупности с нормальным распределением. А вот насколько отклонение от нормальности существенно с точки зрения применения параметрики, часто решается исходя из полученных графиков/данных. На выборках небольшого объема, но сильно отличающимся от нормального распределения, мы можем себе позволить р-value больше 0,05, а вот на больших выборках и небольшие отличия будут значимы на уровне р ks.test(rnorm(n, mean = 0, sd = 1),pnorm) и увеличивать свой скепсис касательно критериев. Ведь чем больше выборка, тем менее значимы отклонения от нормальности в распределении данных. А вот такие тесты нормальности работают наоборот: чем больше данных, тем больше мощность, и тем чаще p-value

Здравствуйте, а как по boxplot понять распределение данных? Или он не для этого?

Лучше использовать Violin plot, он нагляднее показывает распределение. По нему проще понять, где сконцентрировано больше данных, вокруг медианы или около максимума/минимума.

import matplotlib matplotlib.use(‘TkAgg’) import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt rs = np.random.RandomState(42) data = rs.randn(1000, 3) * [2, 0.564, 1.5] + [0, 1, -1] data[:, :32] * -5 + 10 df = pd.DataFrame(data) print(df) sns.violinplot(x=’variable’, y=’value’, data=pd.melt(df), scatter_kws=<"s": 100>, bw=0.3, kind=»violin», palette = «Blues») plt.violinplot(df.T) plt.xlabel(‘Day’) plt.ylabel(‘CPC’) plt.show()


Классически идет с черной толстой полосой в центре, которая показывает интервал между четвертями. Эта полоса перетекает в тонкую черную линию, которая визуализирует 95% доверительные интервалы, и белая точка в центре это медиана.

Cancel Reply

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

ТОП 13 Python библиотек для работы с данными 2020

Поскольку Python в последние годы приобрел большую популярность в отрасли Data Science, я хотел бы изложить некоторые из его наиболее полезных библиотек для работы с данными.

Все библиотеки с открытым исходным кодом и поэтому мы сравним их по таким показателям как количество коммитов, вкладов и запросов на Github, а также Google Trends. Эти данные можно будет использовать как метрики популярности библиотек.

Основные библиотеки

1. NumPy (коммиты: 16348, контрибьюторы: 540)

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

Мастер Йода рекомендует:  WCAG-2.0 - вторая версия стандарта доступности содержимого

Математические алгоритмы, реализованные на Python, часто работают гораздо медленнее тех же алгоритмов, реализованных на компилируемых языках (например, Фортран, Си, Java). Библиотека NumPy предоставляет реализации вычислительных алгоритмов (в виде функций и операторов), оптимизированные для работы с многомерными массивами. В результате любой алгоритм, который может быть выражен в виде последовательности операций над массивами (матрицами) и реализованный с использованием NumPy, работает так же быстро, как эквивалентный код, выполняемый в MATLAB.

2. SciPy (коммиты: 17509, контрибьюторы: 510)

SciPy – это открытая библиотека высококачественных научных инструментов для языка программирования Python. SciPy содержит модули для оптимизации, интегрирования, специальных функций, обработки сигналов, обработки изображений, генетических алгоритмов, решения обыкновенных дифференциальных уравнений и других задач, обычно решаемых в науке и при инженерной разработке. Библиотека разрабатывается для той же аудитории, что MATLAB и Scilab. Для визуализации при использовании SciPy часто применяют библиотеку Matplotlib, являющуюся аналогом средств вывода графики MATLAB. В настоящее время SciPy распространяется под лицензией BSD и его разработчики спонсируются Enthought.

  • поиск минимумов и максимумов функций;
  • вычисление интегралов функций;
  • поддержка специальных функций;
  • обработка сигналов;
  • обработка изображений;
  • работа с генетическими алгоритмами;
  • решение обыкновенных дифференциальных уравнений;
  • и др.

3. Pandas (коммиты: 15418, контрибьюторы: 848)

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

Основные возможности библиотеки:

  • Объект DataFrame для манипулирования индексированными массивами двумерных данных
  • Инструменты для обмена данными между структурами в памяти и файлами различных форматов
  • Встроенные средства совмещения данных и способы обработки отсутствующей информации
  • Переформатирование наборов данных, в том числе создание сводных таблиц
  • Срез данных по значениям индекса, расширенные возможности индексирования, выборка из больших наборов данных
  • Вставка и удаление столбцов данных
  • Возможности группировки позволяют выполнять трёхэтапные операции типа «разделение, изменение, объединение» (англ. split-apply-combine).
  • Слияние и объединение наборов данных
  • Иерархическое индексирование позволяет работать с данными высокой размерности в структурах меньшей размерности
  • Работа с временными рядами: формирование временных периодов и изменение интервалов и т. д.

Статистика Google Trends

История запросов на GitHub

Визуализация

4. Matplotlib (коммиты: 22235, контрибьюторы: 616)

Matplotlib — это библиотека Python для построения качественных двумерных графиков. Matplotlib является гибким, легко конфигурируемым пакетом, который вместе с NumPy, SciPy и IPython предоставляет возможности, подобные MATLAB. В настоящее время пакет работает с несколькими графическими библиотеками, включая wxWindows и PyGTK.

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

  • Графики (line plot)
  • Диаграммы разброса (scatter plot)
  • Столбчатые диаграммы (bar chart) и гистограммы (histogram)
  • Круговые диаграммы (pie chart)
  • Ствол-лист диаграммы (stem plot)
  • Контурные графики (contour plot)
  • Поля градиентов (quiver)
  • Спектральные диаграммы (spectrogram)

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

Несложные трёхмерные графики можно строить с помощью набора инструментов (toolkit) mplot3d. Есть и другие наборы инструментов: для картографии, для работы с Excel, утилиты для GTK и другие.

5. Bokeh (коммиты: 16121, контрибьюторы: 243)

Bokeh — это мощная библиотека с открытым исходным кодом, которая позволяет визуализировать данные для веб-приложений, не написав ни строчки на javascript. Изучение библиотек для визуализации вроде d3.js может оказаться полезным, но гораздо легче написать несколько строк кода на Python, чтобы решить задачу.

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

6. Plotly (коммиты: 2593, контрибьюторы: 38)

Plotly – это библиотека, с помощью, которой достаточно легко строить интерактивные графики в Jupyter Notebook’e. В Python есть много библиотек для визуализации, среди них и те, которые позволяют строить интерактивные графики, например, bokeh, pygal и plotly, о котором собственно идет речь.

Plotly позицинируется как online-платформа, где можно создавать и публиковать свои графики. Однако, эту библиотеку можно использовать и просто в Jupyter Notebook’e. К тому же у библиотеки есть offline-mode, который позволяет использовать ее без регистрации и публикации данных и графиков на сервер plotly.

7. SciKit-Learn (коммиты: 22096, контрибьюторы: 898)

Scikit-learn это библиотека для машинного обучения на языке программирования Python с открытым исходным кодом. С помощью нее можно реализовать различныеалгоритмы классификации, регрессии и кластеризации, в том числе алгоритмы SVM,случайного леса, k-ближайших соседей и DBSCAN, которые построены на взаимодействии библиотек NumPyи SciPy с Python.

Достоинствами данной библиотеки являются:

  • Простые и эффективные инструменты для data mining и data analysis;
  • Удобный доступ к необходимым компонентам;
  • Построен на NumPy, SciPy и Matplotlib;
  • Открытый исходный код, лицензия BSD.

Статистика Google Trends

История запросов на GitHub

Machine Learning

8. Theano (коммиты: 26580, контрибьюторы: 313)

Theano — это расширение языка Python, позволяющее эффективно вычислять математические выражения, содержащие многомерные массивы. Библиотека предоставляет базовый набор инструментов для конфигурации нейросетей и их обучения. Наибольшее признание Theano получила в задачах машинного обучения при решении задач оптимизации. Библиотека позволяет использовать возможности GPU без изменения кода программы, что делает ее незаменимой при выполнении ресурсоемких задач.

  • тесная интеграция с NumPy;
  • прозрачное использование GPU;
  • эффективное дифференцирование переменных;
  • быстрая и стабильная оптимизация;
  • динамическая генерация кода на C;
  • расширенные возможности юнит-тестирования и самопроверок;

9. TensorFlow (коммиты: 19862, контрибьюторы: 956)

Проект TensorFlow масштабнее, чем вам может показаться. Тот факт, что это библиотека для глубинного обучения, и его связь с Гуглом помогли проекту TensorFlow привлечь много внимания. Но если забыть про ажиотаж, некоторые его уникальные детали заслуживают более глубокого изучения:

  • Основная библиотека подходит для широкого семейства техник машинного обучения, а не только для глубинного обучения.
  • Линейная алгебра и другие внутренности хорошо видны снаружи.
  • В дополнение к основной функциональности машинного обучения, TensorFlow также включает собственную систему логирования, собственный интерактивный визуализатор логов и даже мощную архитектуру по доставке данных.
  • Модель исполнения TensorFlow отличается от scikit-learn языка Python и от большинства инструментов в R.

10. Keras (коммиты: 3745, контрибьюторы: 493)

Keras – это библиотека, позволяющая на более высоком уровне работать с нейросетями. Она упрощает множество задач, используется в быстрых экспериментах и сильно уменьшает количество однообразного кода. В качестве бекендной библиотеки для вычислений keras может использовать theano и tenzorfow.

Изначально Keras вырос как удобная надстройка над Theano. Отсюда и его греческое имя — κέρας, что значит “рог” по-гречески, что, в свою очередь, является отсылкой к Одиссее Гомера. Хотя, с тех пор утекло много воды, и Keras стал сначала поддерживать Tensorflow, а потом и вовсе стал его частью. Впрочем, наш рассказ будет посвящен не сложной судьбе этого фреймворка, а его возможностям. Если вам интересно, добро пожаловать под кат.

Программирование на языке Python. Уровень 4. Анализ и визуализация данных на языке Python. Библиотеки Pandas, numpy, Matplotlib

Программирование и СУБД

Этот курс в нашем Центре
успешно закончили
1656 человек!

The data analysis and visualization in Python. Packages Pandas, numpy, Matplotlib

Всего за несколько лет средства анализа данных, доступные разработчикам на Python, совершили рывок вперёд. Появились мощные пакеты, реализующие алгоритмы машинного обучения, обработку естественных языков, статистический анализ и визуализацию.

Инструменты языка Python просты в использовании, при этом имеют широкие возможности применения. Программирование на Python – простой и эффективный вариант для вхождения в популярную сферу Data Science.

Уникальная особенность языка – возможность быстрого встраивания анализа данных в веб-приложения.

Курс «Анализ и визуализация данных на языке Python. Библиотеки Pandas, numpy, Matplotlib» предназначен для тех, кто ищет гибкий инструмент обработки, анализа и визуализации данных и планирует применять свои навыки в работе большими массивами информации.

Слушатели изучат важнейшие и широко распространенные библиотеки numpy, Matplotlib и Pandas, которые массово применяются в различных областях производственной, финансовой и научной деятельности.

Обучение на курсе построено на примерах реальных проектов в области обработки данных.

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

Курс предназначен для программистов, аналитиков, научных работников. Также курс может служить введением в Data Science.

После окончания обучения Вы будете знать:

  • Основы анализа и визуализации данных, применяемый для этой цели базовый инструментарий языка Python;
  • Основные понятия и методики библиотеки numpy: массив, скаляр, массовая операция, основные операции с массивами, основные функции библиотеки;
  • Библиотеку Matplotlib ее основные понятия и методики применения;
  • Основные виды графиков и диаграмм, способы их построения;
  • Основные понятия и методики библиотеки Pandas.

Специалисты, обладающие этими знаниями и навыками, в настоящее время крайне востребованы. Большинство выпускников наших курсов делают успешную карьеру и пользуются уважением работодателей.

Как использовать Python для анализа данных SEO: справочное руководство

Шпаргалка для веб-разработчика

Как использовать Python для анализа данных SEO: справочное руководство

Вы каждый день выполняете одни и те же повторяющиеся задачи SEO или сталкиваетесь с проблемами, когда нет инструментов, которые могут вам помочь?

Если это так, возможно, пришло время изучить Python.

Первоначальное вложение времени и пота окупится в значительно увеличенной производительности.

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

Оглавление

  • Основы Python
  • Извлечение данных
  • Базовый анализ
  • Сохранение и экспорт результатов
  • Ресурсы, чтобы узнать больше

Основы Python

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

При написании программ на Python вы можете выбирать между Python 2 или Python 3. Лучше писать новые программы на Python 3, но вполне возможно, что ваша система может поставляться с уже установленным Python 2, особенно если вы используете Mac. Пожалуйста, также установите Python 3, чтобы иметь возможность использовать эту шпаргалку.

Вы можете проверить свою версию Python, используя:

Использование виртуальных сред

Когда вы завершите свою работу, важно убедиться, что другие люди в сообществе могут воспроизвести ваши результаты. Им нужно будет иметь возможность устанавливать те же сторонние библиотеки, которые вы используете, часто используя точно такие же версии.

Python предполагает создание виртуальных сред для этого.

Если ваша система поставляется с Python 2, пожалуйста, загрузите и установите Python 3 с помощью дистрибутива Anaconda и выполните эти шаги в командной строке.

Если вы уже используете Python 3, выполните следующие альтернативные шаги в командной строке:

Следующие шаги позволяют работать в любой версии Python и позволяют использовать виртуальные среды.

Когда вы деактивируете среду, вы возвращаетесь к командной строке, и библиотеки, установленные в этой среде, не будут работать.

Полезные библиотеки для анализа данных

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

Большинство из них включены в дистрибутив Anaconda. Давайте добавим их в нашу виртуальную среду.

Вы можете импортировать их в начале вашего кода следующим образом:

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

Вы можете экспортировать все библиотеки (и их номера версий), установленные в вашей виртуальной среде, используя:

Когда вы делитесь этим файлом со своим проектом, любой другой член сообщества может установить все необходимые библиотеки с помощью этой простой команды в своей виртуальной среде:

Использование Jupyter Notebooks

При анализе данных я предпочитаю использовать Jupyter Notebooks, поскольку они предоставляют более удобную среду, чем командная строка. Вы можете проверить данные, с которыми вы работаете, и написать свои программы в исследовательской манере.

Затем вы можете запустить Jupyter, используя:

Вы получите URL, чтобы открыть в вашем браузере.

Кроме того, вы можете использовать Google Colab Laboratory, которая является частью GoogleDocs и не требует настройки.

Форматирование строк

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

Скажем, вы хотите программно получать данные Google Analytics. Вы можете создать URL-адрес API с помощью Google Analytics Query Explorer и заменить значения параметров для API на заполнители с использованием скобок. Например:

— это учетная запись Google, т. е. «ga: 12345678»

— дата начала, т. е. «2020-06-01»

— дата окончания, то есть «2020-06-30».

для списка числовых параметров, то есть «ga: users», «ga: newUsers»

<dimensions> — ​​это список категориальных параметров, т. е. «ga: landingPagePath», «ga: date»

<segment> — это маркетинговые сегменты. Для SEO мы хотим органический поиск, который называется «gaid :: — 5»

<token> — это токен безопасного доступа, который вы получаете из Google Analytics Query Explorer. Срок действия истекает через час, и вам нужно снова выполнить запрос (во время аутентификации), чтобы получить новый.

— это максимальное количество результатов для возврата до 10000 строк.

Вы можете определить переменные Python для хранения всех этих параметров. Например:

Это позволяет довольно легко получать данные с нескольких веб-сайтов или диапазонов данных.

Наконец, вы можете объединить параметры с URL-адресом API, чтобы создать действительный запрос API для вызова.

Python заменит каждому placeholder соответствующее значение из переменных, которые мы передаем.

Строковое кодирование

Кодирование — еще одна распространенная техника манипуляции со строками Многие API требуют строки, отформатированные определенным образом.

Например, если один из ваших параметров является абсолютным URL-адресом, его необходимо кодировать перед тем, как вставить его в строку API с заполнителями.

Вывод будет выглядеть следующим образом: «https% 3A // www.searchenginejournal.com /», который будет безопасно передавать в запрос API.

Другой пример: скажем, вы хотите сгенерировать теги заголовков, которые включают амперсанд (&) или угловые скобки ( ). Их нужно избегать, чтобы избежать путаницы HTML-парсеров.

Вывод будет выглядеть так:

Точно так же, если вы читаете данные, которые закодированы, вы можете вернуть их обратно.

Вывод будет снова считан как оригинал.

Форматирование даты

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

Например, после того, как мы получим результаты от API Google Analytics, мы можем захотеть проанализировать даты в объектах datetime. Это облегчит их сортировку или преобразование из одного строкового формата в другой.

Здесь% b,% d и т. Д. — это директивы, поддерживаемые strptime (используется при чтении дат) и strftime (используется при их записи). Вы можете найти полную ссылку здесь .

Выполнение запросов API

Теперь, когда мы знаем, как форматировать строки и создавать правильные запросы API, давайте посмотрим, как мы на самом деле выполняем такие запросы.

Мы можем проверить ответ, чтобы убедиться, что у нас есть валидные данные.

Вы должны увидеть код ответа 200. Тип содержимого большинства API, как правило, JSON.

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

Чтобы получить окончательный URL, используйте:

Извлечение данных

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

Чтение из JSON

Большинство API будут возвращать результаты в формате JSON. Нам нужно проанализировать данные в этом формате в словарях Python. Вы можете использовать стандартную библиотеку JSON для этого.

Теперь вы можете легко получить доступ к любым нужным вам данным. Например:

Когда вы используете библиотеку запросов для выполнения вызовов API, вам не нужно это делать. Объект ответа предоставляет удобное свойство для этого.

Чтение со страниц HTML

Большая часть данных, которые нам нужны для SEO, будет на клиентских сайтах. Несмотря на то, что нет недостатка в парсерах SEO, важно научиться сканировать под свои нужды, чтобы делать такие например вещи, как автоматическая группировка по типам страниц.

Вы можете получить все абсолютные ссылки, используя это:

Частичный вывод будет выглядеть так:

Далее, давайте выберем некоторые распространенные теги SEO, используя XPATHs:

Заголовок страницы (title)

Мета Описание

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

rel canonical

AMP URL

Softobzor не имеет AMP URL.

Мета Роботы

H1

Домашняя страница не имеет h1.

Значения атрибута HREFLANG

Softobzor не имеет атрибутов hreflang.

Проверка сайта Google

JavaScript рендеринг

Если анализируемая страница требует рендеринга JavaScript, вам нужно только добавить дополнительную строку кода для поддержки этого.

Первый запуск render () займет некоторое время, потому что Chromium будет загружен. Рендеринг Javascript намного медленнее, чем без рендеринга.

Чтение из журналов сервера

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

Давайте посмотрим, как мы можем анализировать файлы журнала сервера, используя регулярные выражения в Python.

Вывод хорошо разбивает каждый элемент записи журнала:

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

Вы можете узнать о регулярных выражениях в Python здесь . Обязательно проверьте раздел о greedy и non-greedy выражениях. Я использую не greedy при создании групп.

Проверка Googlebot

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

Google предоставляет простой подход, чтобы сделать это здесь . Давайте посмотрим, как автоматизировать это с помощью Python.

Вы получите crawl-66-249-66-1.googlebot.com

Вы получите ’66 .249.66.1′ , который показывает, что у нас есть реальный IP-адрес робота Google, так как он соответствует нашему первоначальному IP, который мы извлекли из журнала сервера.

Чтение с URL

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

Можно разбить URL-адреса на их компоненты с помощью регулярных выражений, но гораздо проще и надежнее использовать для этого стандартную библиотеку urllib .

Например, вы можете легко получить имя домена и путь к каталогу, используя:

Это выведет то, что вы ожидаете.

Мы можем дополнительно разбить строку запроса, чтобы получить параметры URL и их значения.

Вы получаете словарь Python в качестве вывода.

Мы можем продолжить и проанализировать строки даты в объектах даты и времени Python, что позволит вам выполнять операции с датами, например, вычислять количество дней между диапазонами.

Другой распространенный метод, используемый в вашем анализе, состоит в разбиении части пути по URL-адресу на «/» для получения частей. Это просто сделать с помощью функции split.

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

Например, вы можете найти все продукты и все категории на веб-сайте электронной коммерции, если структура URL позволяет это сделать.

Выполнение базового анализа

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

Давайте начнем с загрузки сканирования Screaming Frog в pandas dataframe.

Выходные данные показывают все столбцы, доступные в файле Screaming Frog, и их типы Python. С помощью pandas проанализируем последний измененный столбец в объекте даты и времени Python.

Давайте выполним некоторые примеры анализа.

Группировка по каталогу верхнего уровня

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

После создания столбца «Тип страницы» мы группируем все страницы по типу и общему количеству слов. Вывод частично выглядит так:

Группировка по коду статуса

Перечисление временных перенаправлений

Страницы со списком без содержания

Издательская деятельность

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

Интересно, что в обычное рабочее время не так много изменений.

Мы можем построить это прямо из pandas.

Гистограмма, показывающая время дня публикации статей. Гистограмма была сгенерирована с использованием Python 3.

Сохранение и экспорт результатов

Теперь мы переходим к легкой части — сохранению результатов нашей тяжелой работы.

Сохранение в Excel

Сохранение в CSV

Дополнительные ресурсы

Мы лишь слегка коснулись того, что возможно, когда вы добавляете скрипты Python в свою повседневную работу по SEO. Вот несколько ссылок для дальнейшего изучения.

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