Перевод статьи How to Teach Yourself Data Science in 2021: SQL, R, Python and Data Viz
Автор Voon Hao (Travis) Tang
Перевод выполнен с разрешения автора.
Предупреждение: В статье нет оплаченной рекламы ни одного из перечисленных ниже курсов.
Недавно я окончил химический факультет и получил свою первую работу в качестве аналитика данных в технологической компании. Я подробно описал свой путь в статье Из химической инженерии в Data Science. С тех пор, когда я говорил с учениками из моей школы о своем переходе из одной сферы в другую, мне всегда задавали один и тот же вопрос…
"Как ты перешел из инженерии в Data Science?"
Это тот самый вопрос, который я задавал себе сам - как мне перейти? Эта мысль не давала мне покоя и подталкивала к прокачке скиллов Data Scientist-а чуть более года назад.
Конечно, не недостаток информации делает ее изучение трудным. Скорее наоборот, слишком большое количество ресурсов для изучения data science усложняет выбор.
Но сначала давайте разберемся...
Что такое Data Science?
Что ж, это вопрос, одинаково сложный как для рекрутеров, так и для соискателей. Дело в том, что в разных компаниях по разному дают определение Data Science, что делает этот термин неопределенным и расплывчатым. Один говорят, что это программирование, вторые - что математика, третьи утверждают, что все дело в умении работать с данными. И все они по-своему правы. Что касается меня, я согласен со следующим определением:
Data Science это междисциплинарная область, которая использует методы и теории, взятые из математики, информатики, предметных знаний. [1]
Я проиллюстрировал, как это выглядит для меня. Границы между сегментами изображены размытыми, чтобы показать, как знания из каждой области смешиваются вместе, образуя то, что известно как "Data Science".
Хорошо, так как мне изучить Data Science?
В серии постов в своем блоге я хотел бы рассказать о некоторых ресурсах, которые помогли мне в моем начинании, а также их плюсах и минусах. Таким образом я надеюсь помочь людям, которые были на моем месте, в планировании их самостоятельного погружения Data Science. Всего будет четыре поста:
- Работа с данными с помощью SQL, Python и R (вы здесь!).
- Математика, теория вероятностей и статистика.
- Основы информатики.
- Машинное обучение.
В первом посте я расскажу о том, какие знания необходимы Data Scientist-у для работы с данными. Чтобы обрабатывать данные, нужно научиться:
- Извлекать данные из базы данных с помощью SQL-запросов.
- Очищать, обрабатывать, анализировать данные (обычно с помощью Python и/или R).
- Эффективно визуализировать данные.
1. Извлечение данных с помощью SQL-запросов
SQL это язык общения с базой, в которой хранятся данные.
Если данные это сокровища, хранящиеся под землей, то SQL - это лопата для выкапывания сокровищ в необработанном виде. Если конкретнее, это то, что позволяет нам извлекать информацию из одной или сразу нескольких таблиц в базе данных.
Существует много разных "оттенков" SQL: SQL Server, PostgreSQL, Oracle, MySQL и SQLite. Каждый из них немного отличается, но синтаксис во многом схож и вам не надо беспокоиться о том, какой оттенок SQL вы изучаете.
Чтобы выучить иностранный язык, сначала надо выучить слова, прежде чем объединять их в предложения, а затем в абзацы. То же самое можно сказать и об SQL.
Чтобы выучить самые основные понятия (слова или предложения SQL), я использовал DataCamp (Introduction to SQL) и DataQuest (SQL Fundamentals). (Об их плюсах и минусах расскажу чуть позже.) Эти сайты дают освоить базовые навыки SQL с помощью подкрепляющих упражнений и примеров:
- Фильтрация и отбор с SELECT и WHERE.
- Группировка данных с COUNT, SUM, MAX, GROUP BY, HAVING.
- Создание списков уникальных значений и агрегаторов с DISTINCT, COUNT DISTINCT.
- Когда и где использовать OUTER (например LEFT) и INNER JOIN.
- Преобразования строк и времени;
- UNION и UNION ALL.
(Вы можете не знать, что все это значит, но это совершенно нормально! Это просто список вещей, которым вы обучитесь.)
Однако, выполнение этих упражнений недостаточно подготовило меня как аналитика. Я понимал слова и предложения, но был не в состоянии написать ни одного абзаца. В частности, некоторые важные продвинутые понятия, такие как подзапросы и оконные функции, либо отсутствовали, либо освещались недостаточно широко, хотя их спрашивали в нескольких технических интервью и они имели важное значение для моей нынешней роли аналитика. Я говорю о следующих навыках:
- Обработка NULL с COALESCE.
- Подзапросы и их влияние на эффективность запроса.
- Временные таблицы.
- Самообъединение.
- Оконные функции: PARTITION, LEAD, LAG.
- Пользовательские функции.
- Использование индексов в запросах для ускорения операций.
Чтобы освоить эти навыки, я сосредоточился на использовании бесплатного сервиса SQLZoo.net со множеством сложных упражнений по каждому понятию. Моя любимая особенность SQLZoo это то, что в нем есть упражнения, проверяющие тебя на знание различных понятий в одном общем вопросе. Например, один из них снабжен следующей диаграммой отношений сущностей и просит создать на ее основе сложные запросы.
Это близко к тому, с чем мы сталкиваемся на работе в качестве аналитика — мы используем различные освоенные нами методы для извлечения информации из одной и той же базы данных. Приведенная здесь диаграмма относится к вопросу Help Desk. С учетом ее вас просят показать менеджера и количество входящих звонков в течение каждого часа, полученных 12.08.2017. (Попробовать можно здесь!)
Другие ресурсы, которые я использовал, это Zachary Thomas’ SQL Questions и Leetcode.
2. Подготовка данных с помощью R и Python
Проблема с изучением программирования не в недостатке ресурсов, а в их количестве, которое сделало выбор лучших из них довольно сложным. К тому же было трудно понять, какие из инструментов наиболее релевантны. Здесь я буду рекомендовать лишь те, что понравились мне лично.
Начиная изучать программирование и инструменты, необходимые Data Scientist-у, нельзя пройти мимо R и/или Python. Это очень популярные языки программирования, которые используются для работы с данными и их визуализации. Вопрос что лучше - R или Python очень старый и заслуживает отдельного поста. Мое мнение такое:
Не важно, что вы выберете - R или Python — как только вы освоите один, вы можете легко взяться за другой.
Мое знакомство с кодированием на Python и R началось с таких сайтов как CodeAcademy, DataCamp, DataQuest, SoloLearn и Udemy. Эти сайты предоставляют вам возможность самостоятельных занятий, организованных по языкам или пакетам. Все концепции разбиты на удобоваримые части и даются пользователю вместе с кодом, в котором надо заполнить пробелы. В начале каждой урока обычно вам проводят простую демонстрацию, после которой вы можете попрактиковаться в применении новых знаний с помощью упражнений. Некоторые сайты потом предлагают упражнения уже на основе проектов.
Сегодня я сфокусируюсь на двух лидерах моего персонального рейтинга: DataCamp и DataQuest.
DataCamp
DataCamp предлагает видеолекции, которые читают профессионалы в изучаемой вами области, и упражнения с заполнением пробелов в коде.
Видеолекции весьма лаконичны и эффективны.
Особенно мне нравятся в DataCamp их современные курсы по SQL, R и Python, оформленные в карьерные треки. Это избавляет вас от необходимости планировать свою учебную программу - вам нужно только следовать тому треку, который вас интересует. Некоторые из треков включают:
- Python/R для Data Scientist-а.
- Python/R/SQL для аналитика данных.
- R для статистика.
- Python/R в машинном обучении.
- Python/R для разработчика.
Лично я начал свое обучение с трека Data Scientist with R, в котором дается довольно подробное введение в tidyverse, набор невероятно полезных пакетов, включая в первую очередь ggplot2 (для визуализации данных), dplyr (для работы с данными) и stringr (для работы со строками).
Тем не менее, у меня есть претензия к DataCamp — это плохая запоминаемость информации после завершения курсов. С форматом заполнения пробелов в коде легко догадаться, что должно стоять на пустом месте, не понимая по-настоящему концепцию. Когда я обучался на платформе, я старался закончить как можно больше курсов в кратчайшие сроки. Я бегло просматривал код и заполнял пробелы, не понимая общей картины. Если бы я снова начал учиться на DataCamp, я бы потратил время на то, чтобы лучше переварить и понять код в целом, а не только те части, которые меня попросили заполнить.
DataQuest
DataQuest очень похож на DataCamp. Он фокусируется на использовании упражнений по кодированию для освещения концепций программирования. Он также предлагает большой выбор курсов по R, Python и SQL, хотя и не таких обширных, как в DataCamp. А еще в DataQuest нет видео-лекций.
Некоторые из треков DataQuest:
- R/Python для аналитика данных.
- Python для Data Scientist-а.
- Data Engineering.
По содержанию DataQuest сложнее DataCamp. Здесь меньше упражнений в формате 'заполни пробелы’ и на их выполнение уходит больше времени, но полученные знания запоминаются лучше.
Еще одна замечательная особенность DataQuest - ежемесячный созвон с наставником, который будет проверять ваше резюме и давать технические рекомендации. Хотя я лично не связывался с наставником, я бы сделал это задним числом, так как это определенно ускорило бы мой прогресс.
3. Визуализация данных
Визуализация данных — это ключ к представлению информации, которую вы извлекли из своих данных. Изучив технические навыки создания диаграмм с помощью Python и R, я изучил принципы визуализации данных, изложенные в книге "Storytelling with Data" (автор - Cole Nussbaumer Knaflic).
Эта книга является платформенно-независимой. Другими словами, она не фокусируется на каком-то конкретном программном обеспечении, а учит общим принципам визуализации данных с помощью наглядных примеров. Некоторые из советов, которые вы можете найти в этой книге:
- Поймите связь между данными.
- Выберите эффективный визуальный элемент.
- Наведите порядок.
- Привлеките внимание там, где вы этого хотите.
- Думайте как дизайнер.
- Рассказывайте историю.
Я думал, что знаю о визуализации данных, пока не прочитал эту книгу.
После того, как я переварил книгу, я смог создать (отчасти) визуально приятную диаграмму, которая касается жестокости полиции в отношении чернокожих. Один из основных моментов, которым учит описываемая мной книга, состоит в том, что надо привлекать внимание там, где вы этого хотите. Это было сделано путем выделения афроамериканской линии ярко-желтым цветом, напоминающим цвет логотипа BLM-движения, при этом остальная часть диаграммы осталась на заднем плане с более тусклыми белым и серым оттенками.
Следующие шаги
В этом посте я описал шаги, которые предпринял в изучении программирования с нуля. С помощью перечисленных мною курсов вы можете получить все необходимые навыки для работы с данными! Тем не менее, предстоит еще довольно длинный путь, об этапах которого я расскажу в следующих постах:
- Часть 2: Математика, теория вероятностей и статистика.
- Часть 3: Основы информатики.
- Часть 4: Машинное обучение.
Если у вас есть какие-либо вопросы, не стесняйтесь связаться со мной в LinkedIn. Всего вам доброго, и удачи!
Что еще почитать
Если вам понравился этот пост, вы можете почитать другие мои статьи о машинном обучении:
- What makes great wine… great? (Использование машинного обучения и графика частичной зависимости в поисках хорошего вина)
- Interpreting Black-Box ML Models using LIME (Наглядное использование LIME при моделировании данных о раке молочной железы)
- How are you feeling? (Построение сверточной нейронной сети для обнаружения 7 типов эмоций)
- Higher Spending Leads to Poorer Education? (Байесовский статистический проект с использованием методов Монте-Карло)
Ссылки
[1] Dhar, V. (2013). “Data science and prediction”. Communications of the ACM. 56 (12): 64–73. doi:10.1145/2500499. S2CID6107147. Архивировано из первоисточника 09.11.2014. Проверено 02.09.2015.