Фото Мириам Джессиер на Unsplash

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

Это вторая часть серии постов, описывающих дорожную карту, которой я следую в изучении науки о данных: мой предыдущий пост касался навыков программирования, и его можно найти здесь, часть 1. Часть 3, посвященная математике и статистике, доступна здесь. В следующем посте я собираюсь перечислить важные навыки, которые, по моему мнению, должны быть включены в план изучения науки о данных, чтобы иметь возможность выполнять эти предварительные аналитические шаги.

SQL

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

SQL означает язык структурированных запросов и является стандартным языком, используемым для запросов к реляционным базам данных. Реляционная база данных — это набор таблиц, состоящих из столбцов и строк данных, которые связаны друг с другом посредством общих идентификаторов ключей.

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

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

Существует множество бесплатных обучающих программ, но я всегда считаю, что мне нужно немедленно применить все, что я узнал, на практике. Изучая науку о данных, я работал полный рабочий день аналитиком данных, поэтому у меня никогда не было недостатка в доступе к базам данных для практики. Однако, поскольку у большинства людей нет этого полезного веб-сайта http://www.sqlfiddle.com/, который позволяет создавать таблицы и запрашивать их на нескольких распространенных платформах баз данных, включая MySQL, PostgreSQL и SQLite.

Пример кода из SQL Fiddle

Облачное хранилище данных

Я работаю с Google BigQuery чуть больше года, стандартный синтаксис sql очень похож на синтаксис других баз данных, но к вложенным и повторяющимся полям BigQuery может потребоваться некоторое привыкание. Поскольку все больше и больше компаний выбирают облачные решения для хранения данных, полезно знать немного о том, как с ними взаимодействовать. BigQuery имеет бесплатный уровень использования, который поддерживает до 10 ГБ хранилища и 1 ТБ запросов, чего достаточно, чтобы получить некоторый опыт работы с данными на платформе.

Существует ряд легкодоступных общедоступных наборов данных, а также вы можете создавать здесь свои собственные источники данных. Google регулярно выпускает функции, которые упрощают применение машинного обучения. Один из последних выпусков BigQuery ML позволяет создавать модели машинного обучения с помощью стандартных SQL-запросов. Хотя реализация в настоящее время ограничена только моделями на основе регрессии, я думаю, что у нее есть потенциал для быстрого определения прогностических возможностей ваших данных. Для этого есть хорошая документация https://cloud.google.com/bigquery/docs/bigqueryml-intro, над которой я недавно работал.

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

Как упоминалось в предыдущем посте, я выбрал Python в качестве предпочтительного языка программирования, поэтому при обсуждении визуализаций я буду рассматривать только библиотеки Python. Однако существуют и другие библиотеки визуализации, доступные на других языках, включая ggpolt2 в R и D3.js в javascript.

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

Панды

В Pandas есть несколько основных инструментов построения графиков, здесь доступно большинство популярных графиков, включая гистограммы, диаграммы рассеяния и коробчатые диаграммы. Они не создают самых красивых визуализаций, поскольку не имеют большого разнообразия вариантов форматирования, но я считаю, что при работе с фреймами данных они позволяют получить очень быстрое приблизительное представление о закономерностях и тенденциях в наборе данных. Документация pandas очень хорошо это описывает https://pandas.pydata.org/pandas-docs/stable/visualization.html.

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

Matplotlib

Matplotlib предоставляет большее разнообразие графиков и дает вам больший контроль над цветами, свойствами шрифта, стилями линий и свойствами осей. Хотя графики, которые он создает, не очень привлекательны визуально, важно иметь представление о matplotlib, поскольку на его основе построены многие из более продвинутых библиотек построения графиков. Опять же, документация для matplotlib очень хороша и включает в себя множество примеров графиков для экспериментов. В CodeAcademy также есть краткий курс https://www.codecademy.com/learn/learn-matplotlib.

Сиборн

Хотя matplotlib сам по себе может создавать некоторые разумно выглядящие графики, для их создания обычно требуется много строк кода. Здесь на помощь приходит seaborn: seaborn построен на основе matplotlib и позволяет создавать фантастически выглядящие графики всего с помощью пары строк кода. Посмотрите этот пример ниже, здесь я смог быстро и привлекательно просмотреть корреляции в этом наборе данных с помощью всего лишь нескольких строк кода. По Kaggle есть действительно подробное руководство https://www.kaggle.com/kanncaa1/seaborn-tutorial-for-beginners.

Подготовка данных

Помимо извлечения и объединения данных в SQL, вам также необходимо знать, как их очищать и преобразовывать для подготовки к моделированию. В Python снова есть ряд библиотек для этого. Pandas можно использовать для обработки недостающих данных, а также для слияния и объединения наборов данных. Библиотеку даты и времени Python также полезно изучить, поскольку вам, вероятно, придется манипулировать данными, содержащими даты и метки времени. Dataquest очень хорошо описывает все это в своем пути исследования данных https://www.dataquest.io/course/data-exploration.

Также полезно иметь представление о различных типах данных и о том, как их обрабатывать перед моделированием. Например, понимание того, как превратить столбец, содержащий категориальные текстовые данные, в числовые данные. Библиотека Sci-Kit Learn имеет ряд функций предварительной обработки, которые также очень полезны для изучения. Эта библиотека имеет встроенные функции для стандартизации функций, обработки выбросов в данных, нормализации функций и вменения пропущенных значений. И снова я нашел очень хорошую документацию здесь http://scikit-learn.org/stable/modules/preprocessing.html#binarization.

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