← Все курсы · Курс SQL · Курс Python
Как SQL и Python работают вместе в анализе данных
В каждом объявлении о вакансии аналитика данных запрашиваются SQL и Питон. Это поднимает честный вопрос для новичков, на который, кажется, никто не отвечает напрямую. Если оба работают с данными, зачем мне два инструмента? Разве они не конкурируют? К какому из них мне обратиться и когда? Это руководство отвечает на этот вопрос с помощью четкого разделения труда, реального проекта, в котором используются оба, и прямых рекомендаций, чему следует научиться в первую очередь.
- Ответ одним предложением
- Для чего на самом деле нужен SQL
- Для чего на самом деле нужен Python
- Трубопровод: как они передаются
- Реальный пример: один проект, оба инструмента
- Когда какой использовать (таблица решений)
- Что выучить в первую очередь
Ответ одним предложением
Сначала попробуйте разделить себя. Назовите одну работу, которую, по вашему мнению, может выполнить только SQL, и одну, которую, по вашему мнению, может выполнить только Питон. Затем сравните их с предложением ниже.
SQL работает с данными, которые уже находятся в базе данных; Python делает все, что связано с базой данных. SQL не может получить данные из Интернета, прочитать папку с файлами, отправить электронное письмо или нарисовать диаграмму. Python может все это сделать. Но для основных аналитических операций — фильтрации миллионов строк, соединения таблиц, группировки и подсчета — база данных, использующая SQL, выполняется быстрее и проще. Это также ближе к тому, как компании на самом деле хранят свои данные. Они не соперники. Это две станции на одной сборочной линии.
Для чего на самом деле нужен SQL
SQL (язык структурированных запросов) — это язык для задания вопросов к таблицам, находящимся в базе данных. Он непобедим в:
- Фильтрация — «только 2024 заказа на сумму более 100 долларов» из 50 миллионов строк, в секундах.
- Присоединение — подключение таблицы заказов к таблице клиентов к таблице товаров.
- Агрегирование — доход на регион в месяц, рассчитываемый там, где находятся данные, вместо переноса 50 миллионов строк на ваш ноутбук.
- Определение истины — сохраненный SQL-запрос представляет собой точное и доступное для просмотра описание того, как рассчитывается метрика.
Ее границы не менее важны: SQL видит только то, что находится внутри базы данных. Если нужные вам данные находятся на веб-сайте, через API или разбросаны по 40 электронным таблицам в папке, SQL не сможет получить к ним доступ.
Для чего на самом деле нужен Python
Python — это язык программирования общего назначения, и для аналитиков это означает, что он обрабатывает все, что не видит база данных:
- Сбор — вызов веб-API, очистка страниц, чтение сотен файлов, извлечение данных из облачных сервисов.
- Автоматизация — «выполняйте эту же уборку каждый понедельник в 8 утра» — это скрипт Python, работающий по расписанию.
- Анализ за пределами досягаемости SQL — статистика, прогнозирование, машинное обучение.
- Представляя — диаграммы, информационные панели, форматированные отчеты Excel, электронные письма с прикрепленными числами.
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, диаграммы, веб-страницы.
--, комментарии Python начинаются с #. Та же идея, другой маркер — и знание того, в каком файле вы находитесь, подскажет, какой маркер вам нужен.Когда какой использовать (таблица решений)
| Вам нужно… | Достичь | Почему |
|---|---|---|
| Фильтрация, объединение или суммирование таблиц в базе данных. | SQL | База данных делает это быстрее всего именно там, где хранятся данные. |
| Получить данные из веб-API или веб-сайта | Python | SQL не может выполнять интернет-запросы. |
| Чтение/объединение множества файлов в папке | Python | SQL видит только внутреннюю часть своей базы данных. |
| Определите показатель, который может просмотреть каждый | SQL | Сохраненный запрос представляет собой точное определение, которым можно поделиться. |
| Запуск статистики, прогнозов или машинного обучения | Python | За пределами математики SQL; это территория pandas/scikit-учиться. |
| Автоматизируйте повторяющуюся работу | Python (работает SQL) | Python планирует и организует; SQL обрабатывает данные внутри него. |
| Создавайте диаграммы или отчеты на основе результатов | Python или инструмент BI | Презентация происходит после запроса. |
Что выучить в первую очередь
Ответьте себе, прежде чем читать, и обратите внимание на причину, а не на свой выбор. Большинство людей выбирают, какой язык звучит более впечатляюще. Три причины, приведенные ниже, рассказывают о том, как на самом деле выглядит ваша первая неделя на работе.
SQL в первую очередь. Три причины. Это меньший язык, и дюжина ключевых слов охватывает большую часть аналитической работы. Он появляется в большем количестве объявлений о вакансиях аналитика, чем любой другой навык. И первый день работы с данными обычно начинается со слов «вот наша база данных», а не «пожалуйста, создайте нам конвейер данных». Освойтесь с функциями SELECT, WHERE, JOIN и GROUP BY. Затем добавьте Python, когда вы столкнетесь со стеной, которую SQL не может преодолеть, обычно «нужные мне данные еще не находятся в базе данных». Эта стена — лучшая мотивация Python, потому что вы будете точно знать, почему вы ее изучаете.
Python для аналитиков составляет 203 страницы, pandas читают построчно простыми словами, начиная именно с того места, где заканчивается набор результатов.
Python для аналитиков, 19 $ →тот Курс SQL охватывает основу аналитического SQL — SELECT через JOIN — с проработанными примерами, практикой, карточками и пробным экзаменом. Курс Python берет вторую половину: основы языка плюс приемы pandas, которые фактически используют аналитики. Ни для того, ни для другого устанавливать нечего.
Откройте набор SQL → Откройте комплект Python →Или приступайте к делу и учитесь, написав запросы: открыть SQL-практикум, тринадцать запросов, каждый из которых добавляет что-то одно к последнему.