← Все курсы · Курс SQL · Курс Python

Как SQL и Python работают вместе в анализе данных

Когда вам нужен какой инструмент и как он передается · Часть Analyst Prep Kit

К , аналитик данных · Обновлено

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

Что здесь
  1. Ответ одним предложением
  2. Для чего на самом деле нужен SQL
  3. Для чего на самом деле нужен Python
  4. Трубопровод: как они передаются
  5. Реальный пример: один проект, оба инструмента
  6. Когда какой использовать (таблица решений)
  7. Что выучить в первую очередь

Ответ одним предложением

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

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

Для чего на самом деле нужен SQL

SQL (язык структурированных запросов) — это язык для задания вопросов к таблицам, находящимся в базе данных. Он непобедим в:

Ее границы не менее важны: SQL видит только то, что находится внутри базы данных. Если нужные вам данные находятся на веб-сайте, через API или разбросаны по 40 электронным таблицам в папке, SQL не сможет получить к ним доступ.

Для чего на самом деле нужен Python

Python — это язык программирования общего назначения, и для аналитиков это означает, что он обрабатывает все, что не видит база данных:

Python может также фильтровать, объединять и агрегировать (библиотека pandas делает именно это), вот откуда возникает путаница. Практическое правило: когда данные уже находятся в базе данных, выполняйте там тяжелую обработку строк с помощью SQL. Пусть Python работает с меньшим результатом, а не наоборот.

Трубопровод: как они передаются

Большая часть реальной работы аналитика следует одной и той же трехэтапной схеме:

ЭтапинструментЧто происходит
1. СоберитеPythonИзвлечение из API, файлов или экспорта; поместить необработанные данные в базу данных.
2. АнализируйтеSQLОчищать, объединять, фильтровать, агрегировать — внутри базы данных, где находятся данные.
3. Настоящее времяPython (или инструмент BI)Превратите результаты SQL в диаграммы, отчеты или модели.

Иногда этап 1 за вас уже сделан (база данных компании существует) и вы полностью живете в SQL. Иногда этап 3 — это Tableau или Power BI вместо Питон. Но когда в объявлении о вакансии запрашиваются оба языка, причина в этом конвейере: им нужен кто-то, кто может получить данные, а не просто запрашивать данные, предоставленные кем-то другим.

Реальный пример: один проект, оба инструмента

Поиск песен, похороненных радио

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

Портфолио-проект задается вопросом: какие песни известных исполнителей пропустило радио, хотя слушателям они понравились? Для ответа требуются два набора данных — история чартов Рекламный щит Горячий 100 (какие награды вознаграждало радио) и статистика воспроизведения Last.fm (что на самом деле воспроизводят слушатели). Следите за конвейером:

Этап 1 — Питон собирает. История диаграммы представляет собой CSV, это легко. Но данные прослушивателя существуют только за живым веб-API, и SQL не может обращаться к Интернету. Итак, скрипт Python длиной около 60 строк считывает список из 1570 артистов из базы данных SQLite. Он запрашивает у API Last.fm лучшие треки каждого исполнителя, вежливо делая паузу между запросами, и записывает ответы в CSV:

import sqlite3
import urllib.request

# SQL inside Python: pull the artist roster from the database
conn = sqlite3.connect("music_gems.db")
roster = [row[0] for row in conn.execute(
    "SELECT primary_artist FROM known_artists")]
conn.close()

# Python-only territory: call a web API, once per artist
for artist in roster:
    url = "https://ws.audioscrobbler.com/2.0/?method=artist.gettoptracks&..."
    reply = urllib.request.urlopen(url)   # SQL could never do this line
    ...

Обратите внимание на передачу управления в миниатюре: вторая строка сценария запускает SQL-запрос от внутри Python (встроенный sqlite3 библиотека выполняет соединение). Эти два языка буквально имеют один и тот же сценарий.

Этап 2 — SQL-анализ. Полученный CSV-файл импортируется в виде таблицы. Каждый аналитический вопрос оттуда — это SQL: какие исполнители попадают в чарты повторно (GROUP BY + HAVING) и какие треки имеют высокий процент прослушиваний на одного слушателя. Затем следует запрос о выплате. Это соединение, соединяющее таблицу чартов с таблицей слушателей, чтобы найти любимые, но никогда не попавшие в чарты песни. Фильтрация и объединение сотен тысяч строк — это именно то, для чего создана база данных.

Этап 3 — Настоящее. Окончательный список драгоценных камней достаточно мал для чего угодно: таблицы README, диаграммы, веб-страницы.

Одна привычка, которая передается между обоими языками: комментарии. Комментарии SQL начинаются с --, комментарии Python начинаются с #. Та же идея, другой маркер — и знание того, в каком файле вы находитесь, подскажет, какой маркер вам нужен.

Когда какой использовать (таблица решений)

Вам нужно…ДостичьПочему
Фильтрация, объединение или суммирование таблиц в базе данных.SQLБаза данных делает это быстрее всего именно там, где хранятся данные.
Получить данные из веб-API или веб-сайтаPythonSQL не может выполнять интернет-запросы.
Чтение/объединение множества файлов в папкеPythonSQL видит только внутреннюю часть своей базы данных.
Определите показатель, который может просмотреть каждыйSQLСохраненный запрос представляет собой точное определение, которым можно поделиться.
Запуск статистики, прогнозов или машинного обученияPythonЗа пределами математики SQL; это территория pandas/scikit-учиться.
Автоматизируйте повторяющуюся работуPython (работает SQL)Python планирует и организует; SQL обрабатывает данные внутри него.
Создавайте диаграммы или отчеты на основе результатовPython или инструмент BIПрезентация происходит после запроса.

Что выучить в первую очередь

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

SQL в первую очередь. Три причины. Это меньший язык, и дюжина ключевых слов охватывает большую часть аналитической работы. Он появляется в большем количестве объявлений о вакансиях аналитика, чем любой другой навык. И первый день работы с данными обычно начинается со слов «вот наша база данных», а не «пожалуйста, создайте нам конвейер данных». Освойтесь с функциями SELECT, WHERE, JOIN и GROUP BY. Затем добавьте Python, когда вы столкнетесь со стеной, которую SQL не может преодолеть, обычно «нужные мне данные еще не находятся в базе данных». Эта стена — лучшая мотивация Python, потому что вы будете точно знать, почему вы ее изучаете.

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

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

Python для аналитиков, 19 $ →
Изучите оба варианта в своем браузере.

тот Курс SQL охватывает основу аналитического SQL — SELECT через JOIN — с проработанными примерами, практикой, карточками и пробным экзаменом. Курс Python берет вторую половину: основы языка плюс приемы pandas, которые фактически используют аналитики. Ни для того, ни для другого устанавливать нечего.

Откройте набор SQL →  Откройте комплект Python →

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