В работе аналитика существенную роль играет качество данных. Часто эту важную роль описывают через принцип GIGO (garbage in, garbage out) — «мусор на входе, мусор на выходе». Если мы не обработаем источники данных до начала анализа, то пользы от самого анализа не будет.
Сегодня мы узнаем, как подготовить данные к дальнейшему использованию и почему это важно.
Что такое источник данных
Источник данных — это физическая или цифровая локация, где данные хранятся в виде таблицы, файла или в другом формате.
Таблица — это пример модели данных или логической структуры. Именно при помощи таблиц мы организуем данные, то есть моделируем их в источнике по определенной схеме. Таблица помогает иллюстрировать взаимоотношения между разными элементами и управлять данными без их искажения.
База данных тоже считается моделью данных, потому что она состоит из множества взаимосвязанных таблиц. Кроме того, существуют такие распространенные модели:
- Иерархическая модель
- Реляционная модель
- Унифицированный язык моделирования (UML или Unified Modeling Language)
- Диаграмма «Сущность-связь» (ERD или Entity-Relationship Diagram)
- Объектно-ориентированная модель
- Многомерное моделирование
Как работает принцип GIGO
Чтобы проиллюстрировать принцип GIGO, возьмем таблицу Orders с данными по заказам клиентов. Если интересно, можете изучить оригинал на сайте Tableau Public.
Представим, что мы хотим изучить данные клиента по имени Aaron Bergman. Чистые и подготовленные данные продаж по этому клиенту выглядят так:
Грязные данные заметно отличаются:
Возьмем другой пример. Предположим, мы хотим взглянуть на продажи клиенту в разных городах. Визуализация этих данных в Tableau отобразит корректную сумму продаж:
При визуализации замусоренных данных мы получим другой результат:
Как видите, замусоренные данные заметно отличаются от чистых. Все дело в неправильно заполненных полях. Из-за орфографических ошибок мы видим пять городов, хотя на самом деле их три — Оклахома, Сиэтл и Арлингтон.
Из-за этой ошибки суммы продаж сильно завышены. Значит, и общие выводы будут искажены. Чтобы избежать таких проблем, нужно заранее проверять качество данных и проводить подготовку.
Как подготовить данные
Рассмотрим этапы подготовки:
- Сбор данных
- Исследование и профилирование данных
- Очистка данных
- Структурирование данных
- Трансформация и обогащение данных
- Валидация данных и их сохранение
Сбор данных
Релевантные данные собираются из операционных систем, хранилищ, сайтов и прочих ресурсов. На этом этапе мы проверяем, что собранные данные хорошо подходят для целей запланированного анализа данных.
Можно выделить два типа источников:
-
Машинные файлы — логи интернет-трафика, логи систем и приложений, информация от сенсоров промышленного оборудования, результаты запросов к базе. Такие файлы создаются на клиентском компьютере, телефоне или другом устройстве. Доступ к ним предоставлен пользователям, зарегистрированным в системе. У машинного источника всегда есть DSN (data source name — имя источника данных)
-
Файловые источники — таблицы, текстовые документы, PDF-файлы, изображения, аудио и видео. Такие файлы не прикреплены к конкретным компьютерам, приложениям, системам или пользователям. Их можно свободно распространять среди устройств. В отличие от машинных источников, у них нет DSN
Исследование данных
Следующий шаг — изучить собранные данные (датасет). Здесь аналитик должен разобраться, какие преобразования нужно сделать с датасетом, чтобы подготовить его для конечных пользователей.
Другими словами, на этом этапе происходит профилирование данных. Во время него аналитик идентифицируют паттерны и взаимосвязи, ищет аномалии, замечает пропущенные значения и другие проблемы, на которые надо обратить внимание.
Очистка данных
Далее аналитик исправляет найденные ошибки:
- Дубли
- Пропущенные значения
- Выбросы
- Неверный формат данных
Исправив все ошибки, мы создаем полный и точный датасет.
Структурирование или группировка данных
Далее аналитик подстраивает чистый датасет под конкретную ситуацию.
Для примера представим, что мы получаем данные в формате CSV (comma-separated values). Мы хотим проанализировать их с помощью BI-инструментов, но сходу сделать это не получится. Чтобы BI-инструменты смогли корректно считать и использовать их, нужно конвертировать CSV в таблицу.
Работать с неструктурированными данными неудобно. Например, в сырых данных о покупках одна строка может содержать информацию сразу о нескольких товарах:
Чтобы стало удобнее, нужно разделить товары и разместить каждый купленный продукт в отдельной строке:
Можно сделать данные еще понятнее. Например, человеку сложно воспринимать вот такие данные:
Будет гораздо проще, если мы возьмем номера магазинов и покупателей и заменим их на понятные имена:
Для этого разобьем исходные данные на три источника — таблицы Shops, Customers и Products:
Трансформация и обогащение данных
В дополнение к структурированию данных, датасет часто нужно трансформировать в однородный и используемый формат.
Например, во время трансформации данных мы можем создать новые столбцы или удалять старые, а также агрегировать значения из уже существующих столбцов.
Валидация данных и их сохранение
На финальном шаге остается проверить содержание, полноту и точность данных.
Далее подготовленные данные можно использовать так, как нам нужно: например, проанализировать самостоятельно или передать коллеге.
Как подключаться к источникам данных
К машинным источникам данных можно подключиться с помощью коннекторов (Data Source Connectors). Коннекторы запускают поток данных между приложениями, базами данных или аналитическими инструментами.
Работать таким образом намного удобнее, потому что коннекторы предоставляют однородную платформу, где данные из разных приложений встречаются и взаимодействуют.
Для примера представим, что мы отслеживаем рабочее время сотрудников через Jira и хотим создать отчет с помощью Tableau. Чтобы это сделать создадим новую книгу в Tableau и выберем, с каким источником соединиться:
То же самое можно сделать в Microsoft Excel:
Выводы
В этом уроке вы узнали, что повышение качества данных — это необходимый предварительный шаг, без которого грамотная аналитика невозможна. Теперь вы умеете самостоятельно готовить данные к полноценному анализу, ведь мы изучили все этапы этого процесса — сбор, исследование, очистку, структурирование, трансформацию и валидацию.
<!DOCTYPE html>
<html class="h-100" data-bs-theme="light" data-mantine-color-scheme="light" lang="ru" prefix="og: https://ogp.me/ns#">
<head>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<link crossorigin="true" href="https://cdn.hexlet.io" rel="preconnect">
<link href="https://mc.yandex.ru" rel="preconnect">
<meta content="aa2vrdtq64dub8knuf83lwywit311w" name="facebook-domain-verification">
<link href="/favicon.ico" rel="icon" sizes="any">
<link href="/favicon.svg" rel="icon" type="image/svg+xml">
<link href="/apple-touch-icon.png" rel="apple-touch-icon">
<link href="/manifest.webmanifest" rel="manifest">
<script>
//<![CDATA[
window.gon={};gon.ym_counter="25559621";gon.is_bot=true;gon.applications={};gon.current_user={"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","created_at":"2026-02-26 17:13:01 UTC","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false};gon.token="Tu3fX5bUlCmzJPOpXqD7BH1Wa8LMHyEsBkRRAkP_Qh6hPBRoZKo5SQVn1zFSrwtzvV9GaMQo3467pMtWEfilcA";gon.locale="ru";gon.language="ru";gon.theme="light";gon.rails_env="production";gon.mobile=false;gon.google={"analytics_key":"UA-1360700-51","optimize_key":"GTM-5QDVFPF"};gon.captcha={"google_v3_site_key":"6LenGbgZAAAAAM7HbrDbn5JlizCSzPcS767c9vaY","yandex_site_key":"ysc1_Vyob5ZPPUdPBsu0ykt8bVFdzsfpoVjQChLGl2b4g19647a89","verification_failed":null};gon.social_signin=false;gon.typoreporter_google_form_id="1FAIpQLSeibfGq-KvWQ2Fyru-zkFFRVTLBuzXAHAoEyN1p49FtDmNoNA";
//]]>
</script>
<meta charset="utf-8">
<title>Источники данных | Введение в дата-аналитику</title>
<meta name="description" content="Источники данных / Введение в дата-аналитику: Изучаем источники данных и учимся готовить данные к анализу">
<link rel="canonical" href="https://ru.hexlet.io/courses/data-analytics-basics/lessons/data-sources/theory_unit">
<meta name="robots" content="noarchive">
<meta property="og:title" content="Источники данных">
<meta property="og:title" content="Введение в дата-аналитику">
<meta property="og:description" content="Источники данных / Введение в дата-аналитику: Изучаем источники данных и учимся готовить данные к анализу">
<meta property="og:url" content="https://ru.hexlet.io/courses/data-analytics-basics/lessons/data-sources/theory_unit">
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="7MDYopZiYOv3I48uBpbvocr--qyk4To61MFKjrFK2XIDEROVZBzNi0Fgq7YKmR_WCvfXBqzWxJhpIdDa400-HA" />
<script src="/vite/assets/inertia-INZxX8jp.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/preload-helper-BJ4cLWpC.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-nkZBEvfU.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ahoy-DrlRQ-1D.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/analytics-6pOtQ3OW.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-naDSYSy9.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Surface-DL2bpZA-.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-D3e4yh1x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-CGMYrt2Y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-DRqSHbQE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/extends-C-EagtpE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/inheritsLoose-BBd-DCVI.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/objectWithoutPropertiesLoose-DRHXDhjp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/index.esm-DAqKOkZ0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Button-CGPUux8l.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/CloseButton-D1euiPao.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Group-BX48WcuU.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Loader-BQEY8g6v.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Modal-Cy3HByv7.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/OptionalPortal-1Hza5P2w.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Stack-CtjJzfw4.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Textarea-Ck64llAy.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-B5-OOzBf.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/DirectionProvider-Dc9zdUke.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/events-DJQOhap0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-reduced-motion-D2owz4wa.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-disclosure-zKtK5W1r.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-hotkeys-Cnc_Rwkb.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/random-id-DOQyszCZ.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-C-3AFSMn.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/exports-C_MrNx_T.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-BEvgo0ym.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-BkKovM-s.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/i18next-BlSq9s7B.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-U9M77rxp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-DaLxUz_h.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-Bx1Cdrkz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-6XxiPFnt.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-CwjcCKJi.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CkL4ZRHB.js" as="script" crossorigin="anonymous">
<link rel="stylesheet" href="/vite/assets/application-BqhCP46M.js" />
<script src="/vite/assets/application-Df9RExpe.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/autocomplete-VMNbxKGl.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/createPopper-C3aM9r1M.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/js.cookie-D1-O8zkX.js" as="script" crossorigin="anonymous"><link rel="stylesheet" href="/vite/assets/application-C8HjmMaq.css" media="screen" />
<script>
window.ym = function(){(ym.a=ym.a||[]).push(arguments)};
window.addEventListener('load', function() {
setTimeout(function() {
ym.l = 1*new Date();
ym(window.gon.ym_counter, "init", {
clickmap: true,
trackLinks: true,
accurateTrackBounce: true,
webvisor: true
});
// Загружаем скрипт
var k = document.createElement('script');
k.async = 1;
k.src = 'https://mc.yandex.ru/metrika/tag.js';
document.head.appendChild(k);
ym(window.gon.ym_counter, 'getClientID', function(clientID) {
window.ymClientId = clientID;
});
}, 1500);
});
</script>
<!-- Google Tag Manager - deferred -->
<script>
// dataLayer stub сразу — пуши работают до загрузки скрипта
window.dataLayer = window.dataLayer || [];
// Сам скрипт — отложенно после load
window.addEventListener('load', function() {
setTimeout(function() {
dataLayer.push({'gtm.start': new Date().getTime(), event: 'gtm.js'});
var j = document.createElement('script');
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-WK88TH';
document.head.appendChild(j);
}, 1500);
});
</script>
<!-- End Google Tag Manager -->
</head>
<body>
<noscript>
<div>
<img alt="" src="https://mc.yandex.ru/watch/25559621" style="position:absolute; left:-9999px;">
</div>
</noscript>
<header class="sticky-top bg-body">
<nav class="navbar navbar-expand-lg">
<div class="container-xxl">
<a class="navbar-brand" href="/"><img alt="Логотип Хекслета" height="24" src="https://ru.hexlet.io/vite/assets/logo_ru_light-BpiEA1LT.svg" width="96">
</a><button aria-controls="collapsable" aria-expanded="false" aria-label="Меню" class="navbar-toggler border-0 mb-0 mt-1" data-bs-target="#collapsable" data-bs-toggle="collapse">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="collapsable">
<ul class="navbar-nav mb-lg-0 mt-lg-1">
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
Все курсы
<span class="bi bi-chevron-down align-middle ms-1"></span>
</button>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item d-flex py-2" href="/courses"><div class="fw-bold me-auto">Все что есть</div>
<div class="text-muted">117</div>
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Популярные категории</b>
</li>
<li>
<a class="dropdown-item py-2" href="/courses_devops">Курсы по DevOps
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_data_analytics">Курсы по аналитике данных
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_programming">Курсы по программированию
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_testing">Курсы по тестированию
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Популярные курсы</b>
</li>
<li>
<a class="dropdown-item py-2" href="/programs/devops-engineer-from-scratch">DevOps-инженер с нуля
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/go">Go-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/java">Java-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/python">Python-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/qa-auto-engineer-java">Автоматизатор тестирования на Java
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/data-analytics">Аналитик данных
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/frontend">Фронтенд-разработчик
</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
О Хекслете
<span class="bi bi-chevron-down align-middle"></span>
</button>
<ul class="dropdown-menu bg-body">
<li>
<a class="dropdown-item py-2" href="/pages/about">О нас
</a></li>
<li>
<a class="dropdown-item py-2" href="/blog">Блог
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/hse-research" role="button">Результаты (Исследование)
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://career.hexlet.io" role="button">Хекслет Карьера
</span></li>
<li>
<a class="dropdown-item py-2" href="/testimonials">Отзывы студентов
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://t.me/hexlet_help_bot" role="button">Поддержка (В ТГ)
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/referal-program/?promo_creative=priglasite-druzei&promo_name=referal-program&promo_position=promo_position&promo_start=010724&promo_type=link" role="button">Реферальная программа
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/certificate" role="button">Подарочные сертификаты
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://hh.ru/employer/4307094" role="button">Вакансии
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://b2b.hexlet.io" data-target="_blank" role="button">Компаниям
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexly.ru/" data-target="_blank" role="button">Колледж
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexlyschool.ru/" data-target="_blank" role="button">Частная школа
</span></li>
</ul>
</li>
<li><a class="nav-link" href="/subscription/new">Подписка</a></li>
</ul>
<ul class="navbar-nav flex-lg-row align-items-lg-center gap-2 ms-auto">
<li>
<a class="nav-link" aria-label="Переключить тему" href="/theme/switch?new_theme=dark"><span aria-hidden="true" class="bi bi-moon"></span>
</a></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="/u/new" role="button"><span>Регистрация</span>
</span></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="https://ru.hexlet.io/session/new" role="button"><span>Вход</span>
</span></li>
</ul>
</div>
</div>
</nav>
</header>
<div class="x-container-xxxl">
</div>
<main class="mb-6 min-vh-100 h-100">
<link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzY1MywicHVyIjoiYmxvYl9pZCJ9fQ==--5107185de77b3481e0a836f9fc7326c4e1b77be4/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Data%20extraction-pana.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzk1NSwicHVyIjoiYmxvYl9pZCJ9fQ==--1c8f7302c065771c5d7e80ddb88ca12990da198b/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Analytics-bro.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDg3MSwicHVyIjoiYmxvYl9pZCJ9fQ==--8175585f43b5401994e29b3ae73d76963d942512/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Browser%20stats-bro.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDg2MiwicHVyIjoiYmxvYl9pZCJ9fQ==--04a703ca18d7bf689064f1f3c2721058bd5564e4/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Statistics-bro.png"/><link rel="preload" as="image" href="/vite/assets/development-BVihs_d5.png"/><div id="app" data-page="{"component":"web/courses/lessons/theory_unit","props":{"errors":{},"locale":"ru","language":"ru","httpsHost":"https://ru.hexlet.io","host":"ru.hexlet.io","colorScheme":"light","auth":{"user":{"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","created_at":"2026-02-26T17:13:01.757Z","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false}},"cloudflareTurnstileSiteKey":"0x4AAAAAAA15KmeFXzd2H0Xo","vkIdClientId":"51586979","yandexIdClientId":"88d071f1d3384eb4bd1deb37910235c7","formAuthToken":"B6ptZJklmIaMKFkyM_bOUryLzMOSN5VdRf1Z3wFsWX_oe6ZTa1s15jprfao_-T4lfILhaZoAa__4HcOLU2u-EQ","topics":[{"id":88267,"title":"Что такое витрина данных? В уроке об этом не говорили.","plain_title":"Что такое витрина данных? В уроке об этом не говорили. ","creator":{"public_name":"Петр","id":618081,"is_tutor":false},"comments":[{"creator":{"public_name":"Roman Ashikov","id":226258,"is_tutor":true},"id":176505,"body":"Приветствую! Спасибо, что обратили внимание! Действительно, этот термин не объясняется в теории. Я переработаю самостоятельную работу.","topic_id":88267}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Источники данных","entity_url":null,"active":true}},{"id":95210,"title":"Прошу пояснений к первому вопросу упражнения:\n1. Сколько всего уникальных участников отправило пулл реквестов в 2023 году?\nНадо ли при подготовке ответа на первый вопрос учитывать условие принятия пулл реквестов (Пояснения к второму вопросу) или только факт отправки в 2023 году?\n\n2. Сколько всего пулл реквестов было принято?\nУчитываются только те пулл реквесты у которые удовлетворяют следующим требованиям.\nЗакрыты в 2023 году\nНе содержат пустых полей\nПринятым пулл реквестом считается тот, у которого состояние closed и есть дата принятия.\nПринадлежат репозиторию hexlet/hexlet-cv","plain_title":"Прошу пояснений к первому вопросу упражнения: 1. Сколько всего уникальных участников отправило пулл реквестов в 2023 году? Надо ли при подготовке ответа на первый вопрос учитывать условие принятия пулл реквестов (Пояснения к второму вопросу) или только факт отправки в 2023 году? Сколько всего пулл реквестов было принято? Учитываются только те пулл реквесты у которые удовлетворяют следующим требованиям. Закрыты в 2023 году Не содержат пустых полей Принятым пулл реквестом считается тот, у которого состояние closed и есть дата принятия. Принадлежат репозиторию hexlet/hexlet-cv ","creator":{"public_name":"Ольга п","id":725111,"is_tutor":false},"comments":[{"creator":{"public_name":"Nikolai Gagarinov","id":104929,"is_tutor":true},"id":185901,"body":"Ольга, добрый день.\n\nДолжны выполняться все пункты для обоих вопросов. Т.е. в данном задании необходимо немного почистить данные, оставить только те записи, которые удовлетворяют требованиям\n\n1. Закрыты в 2023 году\n1. Не содержат пустых полей\n1. Принадлежат репозиторию hexlet/hexlet-cv\n\nи посчитать показатели ","topic_id":95210}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Источники данных","entity_url":null,"active":true}},{"id":98153,"title":"теория не соответствует заданию\nв задании практикуются фильтры, а в теории об этом вообще не слова, да и тема вообще другая","plain_title":"теория не соответствует заданию в задании практикуются фильтры, а в теории об этом вообще не слова, да и тема вообще другая ","creator":{"public_name":"Анна Краснова","id":726689,"is_tutor":false},"comments":[{"creator":{"public_name":"Ivan Mamtsev","id":294764,"is_tutor":true},"id":189439,"body":"Добрый день, несколько переформулировал условие. По сути все что нужно, это построить сводную таблицу. Это и указал в задании","topic_id":98153},{"creator":{"public_name":"Артем","id":786515,"is_tutor":false},"id":189363,"body":"Анна, тоже в недоумении от расхождения теории и практики. В теории ни слова какими функциями и методами можно привести таблицу в порядок (убрать пустые ячейки и т.д.), просто сообщают, что это необходимо сделать. Кажется на этом этапе нас учат гуглить)))\nP.S. Спустя несколько часов я таки прошел это задание. Функций только две использовал. Задание больше на усидчивость (чистка) и внимательность (пару ловушек подкинули).","topic_id":98153}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Источники данных","entity_url":null,"active":true}},{"id":99378,"title":"С первого раза получилось 83/11, но решение оказалось неправильным при проверке. Воспользовалась подсказкой, сделала все по подсказке и по итогу получились те же 83/11. Где ошибка?\nhttps://docs.google.com/spreadsheets/d/1sdCG2z2-DU_aMTkYJ5ayQZE2yh0AUXstqC76M0NNK0g/edit?usp=sharing\n","plain_title":"С первого раза получилось 83/11, но решение оказалось неправильным при проверке. Воспользовалась подсказкой, сделала все по подсказке и по итогу получились те же 83/11. Где ошибка? https://docs.google.com/spreadsheets/d/1sdCG2z2-DU_aMTkYJ5ayQZE2yh0AUXstqC76M0NNK0g/edit?usp=sharing ","creator":{"public_name":"Алина","id":810012,"is_tutor":false},"comments":[{"creator":{"public_name":"Ivan Mamtsev","id":294764,"is_tutor":true},"id":191087,"body":"К сожалению по ссылке выше я не могу посмотреть как вы получили сводную таблицу. Но я воспроизвел все действия из решения, и получил ответ из решения.","topic_id":99378}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Источники данных","entity_url":null,"active":true}},{"id":99774,"title":"Добрый день!\nПодскажите пожалуйста, почему в ответе уникальное число 15? В моем решении все перепробовал - получается 20 участников, которые удовлетворяют одновременно трем условиям. Что не так?\nСпасибо.","plain_title":"Добрый день! Подскажите пожалуйста, почему в ответе уникальное число 15? В моем решении все перепробовал - получается 20 участников, которые удовлетворяют одновременно трем условиям. Что не так? Спасибо. ","creator":{"public_name":"Максим","id":800878,"is_tutor":false},"comments":[{"creator":{"public_name":"Игорь Пустошило","id":744978,"is_tutor":false},"id":191313,"body":"**Максим**, вы свою таблицу не расшарили и ее кроме вас никто не видит.\n\nДумаю, вы дату берете из столбца `Created`, а не `Merged`. Это неправильно. ","topic_id":99774},{"creator":{"public_name":"Максим","id":800878,"is_tutor":false},"id":191308,"body":"https://docs.google.com/spreadsheets/d/1hq6g3uS4SSVG-igz98khMF7MXGyJqBgzS6A2aobyR8Y/edit#gid=701301163","topic_id":99774}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Источники данных","entity_url":null,"active":true}},{"id":100759,"title":"Сколько уникальных участников отправило пулл-реквестов в 2023 году? --- подсветите в описание задачи, что в вопросе НЕ имеется ввиду, что пулл-реквест должен был быть отправлен именно в 2023 году. \nа то я очень долго получал ответ 118 про пулл-реквесты","plain_title":"Сколько уникальных участников отправило пулл-реквестов в 2023 году? --- подсветите в описание задачи, что в вопросе НЕ имеется ввиду, что пулл-реквест должен был быть отправлен именно в 2023 году. а то я очень долго получал ответ 118 про пулл-реквесты ","creator":{"public_name":"Максим Латухин","id":822058,"is_tutor":false},"comments":[{"creator":{"public_name":"Varvara","id":831301,"is_tutor":false},"id":192630,"body":"Спасибо за наводку!) А то я с этим 118 все ничего сделать не могла))","topic_id":100759},{"creator":{"public_name":"Olga Pejenkova","id":364375,"is_tutor":true},"id":192689,"body":"**Varvara**, **Максим Латухин**,\n\nСпасибо, что обратили внимание. Уточнила описание вопроса.","topic_id":100759}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Источники данных","entity_url":null,"active":true}},{"id":101007,"title":"Здравствуйте.\n\nПодскажите, пожалуйста, как решать это задание\n\n1) \"Не содержит пустых полей\" - в столбце Merged или вообще в данных по конкретному пулл-реквесту?\n2) Как и у участника выше получается 20 уникальных участников, если считать по столбцу \"Created\", так как вопрос звучит как \"Сколько уникальных участников отправило пулл-реквестов в 2023 году?\", что значит, что реквест был создан в 2023 году? Или нет?\n\nНаглухо застряла на этой задаче ","plain_title":"Здравствуйте. Подскажите, пожалуйста, как решать это задание 1) \"Не содержит пустых полей\" - в столбце Merged или вообще в данных по конкретному пулл-реквесту? 2) Как и у участника выше получается 20 уникальных участников, если считать по столбцу \"Created\", так как вопрос звучит как \"Сколько уникальных участников отправило пулл-реквестов в 2023 году?\", что значит, что реквест был создан в 2023 году? Или нет? Наглухо застряла на этой задаче ","creator":{"public_name":"Яна","id":819842,"is_tutor":false},"comments":[{"creator":{"public_name":"Olga Pejenkova","id":364375,"is_tutor":true},"id":192857,"body":" Здравствуйте, **Яна**, \n\n1. В выборку должны попасть только те строки, которые не содержат пустых полей по любому из столбцов\n2. В описании задания есть уточнение какие пулл-рекветы должны попасть выборку - те, которые закрыты и объединены в 2023 году, т.е. нужно ориентироваться на колонку `merged`.","topic_id":101007}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Источники данных","entity_url":null,"active":true}},{"id":101739,"title":"Добрый вечер!\nЗадание с помощью сводной таблицы мною жёстко не понятно. Поэтому пользовалась чисто обычными фильтрами на таблице и формулами, и вопрос больше про уникальных пользователей за 2023. Каким образом у вас получилось 15, если выполнив все условия для задания, по формуле выдаёт строго 23? https://docs.google.com/spreadsheets/d/1w4NRvIGDDrsL0MX22qs5wW6S3PbB8DgA9Cj5Rwj5dBA/edit?gid=840698424#gid=840698424","plain_title":"Добрый вечер! Задание с помощью сводной таблицы мною жёстко не понятно. Поэтому пользовалась чисто обычными фильтрами на таблице и формулами, и вопрос больше про уникальных пользователей за 2023. Каким образом у вас получилось 15, если выполнив все условия для задания, по формуле выдаёт строго 23? https://docs.google.com/spreadsheets/d/1w4NRvIGDDrsL0MX22qs5wW6S3PbB8DgA9Cj5Rwj5dBA/edit?gid=840698424#gid=840698424 ","creator":{"public_name":"","id":845175,"is_tutor":false},"comments":[{"creator":{"public_name":"Ivan Mamtsev","id":294764,"is_tutor":true},"id":193868,"body":"Советую вам все же проверить что все условия верны","topic_id":101739}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Источники данных","entity_url":null,"active":true}},{"id":101572,"title":"Добрый день!\n1) для ответа на первый вопрос \"Сколько уникальных участников ОТПРАВИЛО пулл-реквестов в 2023 году?\" нужно учитывать только дату Created, но не Merged?\n2)для ответа на второй вопрос \"Сколько пулл-реквестов было принято?\" учитывать только дату Merged? ","plain_title":"Добрый день! 1) для ответа на первый вопрос \"Сколько уникальных участников ОТПРАВИЛО пулл-реквестов в 2023 году?\" нужно учитывать только дату Created, но не Merged? 2)для ответа на второй вопрос \"Сколько пулл-реквестов было принято?\" учитывать только дату Merged? ","creator":{"public_name":"Tatiana","id":840713,"is_tutor":false},"comments":[{"creator":{"public_name":"Tatiana","id":840713,"is_tutor":false},"id":193605,"body":"И фильтры ставить в исходной таблице или уже в сводной? Нигде не объяснялось, как на сводную таблицу повлияют фильтры в исходной таблице. ","topic_id":101572},{"creator":{"public_name":"Tatiana","id":840713,"is_tutor":false},"id":193606,"body":"И еще такой вопрос. Там, где надо было учесть год, я ставила в сводной таблице фильтр по условию \"дата после 31.12.2022\". Ну это я глазами видела, что нет данных за более поздние годы. А как это делать в общем случае, когда нужно выделить какой-то год или дату, но есть не только более ранние даты, но и более поздние? Сделать 2 фильтра на одно поле не получилось.","topic_id":101572},{"creator":{"public_name":"Ivan Mamtsev","id":294764,"is_tutor":true},"id":193649,"body":"Добрый день, и там и там учитываются только смерженные пулл-реквесты. Фильтры ставить в сводной таблице. Для фильтра по датам в диапазоне вы можете выбрать \"Is Between\" и указать начало и конец.","topic_id":101572}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Источники данных","entity_url":null,"active":true}},{"id":102769,"title":"Добрый вечер! Все фильтры настроила в соответствии с условием, однако ответ неправильный.\nhttps://docs.google.com/spreadsheets/d/1hLbEeAfpz8o8S1w_9QtnT-PUlWRQUQSf5hEa3o7MfXc/edit?usp=sharing","plain_title":"Добрый вечер! Все фильтры настроила в соответствии с условием, однако ответ неправильный. https://docs.google.com/spreadsheets/d/1hLbEeAfpz8o8S1w_9QtnT-PUlWRQUQSf5hEa3o7MfXc/edit?usp=sharing ","creator":{"public_name":"Вера Лукичева","id":867221,"is_tutor":false},"comments":[{"creator":{"public_name":"Ivan Mamtsev","id":294764,"is_tutor":true},"id":195078,"body":"Добрый день, попробуйте перепроверить и пройтись по шагам еще раз.","topic_id":102769}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Источники данных","entity_url":null,"active":true}}],"lesson":{"exercise":null,"units":[{"id":8262,"name":"theory","url":"/courses/data-analytics-basics/lessons/data-sources/theory_unit"},{"id":8759,"name":"quiz","url":"/courses/data-analytics-basics/lessons/data-sources/quiz_unit"}],"links":[],"ordered_units":[{"id":8262,"name":"theory","url":"/courses/data-analytics-basics/lessons/data-sources/theory_unit"},{"id":8759,"name":"quiz","url":"/courses/data-analytics-basics/lessons/data-sources/quiz_unit"}],"id":3667,"slug":"data-sources","state":"approved","name":"Источники данных","course_order":700,"goal":"Изучаем источники данных и учимся готовить данные к анализу","self_study":null,"theory_video_provider":null,"theory_video_uid":null,"theory":"В работе аналитика существенную роль играет качество данных. Часто эту важную роль описывают через **принцип GIGO** (_garbage in, garbage out_) — «мусор на входе, мусор на выходе». Если мы не обработаем источники данных до начала анализа, то пользы от самого анализа не будет.\n\nСегодня мы узнаем, как подготовить данные к дальнейшему использованию и почему это важно.\n\n## Что такое источник данных\n\n**Источник данных** — это физическая или цифровая локация, где данные хранятся в виде таблицы, файла или в другом формате.\n\n**Таблица** — это пример **модели данных** или **логической структуры**. Именно при помощи таблиц мы организуем данные, то есть моделируем их в источнике по определенной схеме. Таблица помогает иллюстрировать взаимоотношения между разными элементами и управлять данными без их искажения.\n\nБаза данных тоже считается моделью данных, потому что она состоит из множества взаимосвязанных таблиц. Кроме того, существуют такие распространенные модели:\n\n* Иерархическая модель\n* Реляционная модель\n\n\n\n* Унифицированный язык моделирования (_UML_ или _Unified Modeling Language_)\n* Диаграмма «Сущность-связь» (_ERD_ или _Entity-Relationship Diagram_)\n* Объектно-ориентированная модель\n* Многомерное моделирование\n\n### Как работает принцип GIGO\n\nЧтобы проиллюстрировать принцип GIGO, возьмем таблицу _Orders_ с данными по заказам клиентов. Если интересно, можете изучить оригинал на сайте [Tableau Public](https://public.tableau.com/app/profile/pradeepkumar.g/viz/SampleSuperstore-SalesPerformance/viz_).\n\nПредставим, что мы хотим изучить данные клиента по имени _Aaron Bergman_. Чистые и подготовленные данные продаж по этому клиенту выглядят так:\n\n\n\nГрязные данные заметно отличаются:\n\n\n\nВозьмем другой пример. Предположим, мы хотим взглянуть на продажи клиенту в разных городах. Визуализация этих данных в _Tableau_ отобразит корректную сумму продаж:\n\n\n\nПри визуализации замусоренных данных мы получим другой результат:\n\n\n\nКак видите, замусоренные данные заметно отличаются от чистых. Все дело в неправильно заполненных полях. Из-за орфографических ошибок мы видим пять городов, хотя на самом деле их три — Оклахома, Сиэтл и Арлингтон.\n\nИз-за этой ошибки суммы продаж сильно завышены. Значит, и общие выводы будут искажены. Чтобы избежать таких проблем, нужно заранее проверять качество данных и проводить подготовку.\n\n## Как подготовить данные\n\nРассмотрим этапы подготовки:\n\n1. Сбор данных\n2. Исследование и профилирование данных\n3. Очистка данных\n4. Структурирование данных\n5. Трансформация и обогащение данных\n6. Валидация данных и их сохранение\n\n### Сбор данных\n\nРелевантные данные собираются из операционных систем, хранилищ, сайтов и прочих ресурсов. На этом этапе мы проверяем, что собранные данные хорошо подходят для целей запланированного анализа данных.\n\nМожно выделить два типа источников:\n\n1. **Машинные файлы** — логи интернет-трафика, логи систем и приложений, информация от сенсоров промышленного оборудования, результаты запросов к базе. Такие файлы создаются на клиентском компьютере, телефоне или другом устройстве. Доступ к ним предоставлен пользователям, зарегистрированным в системе. У машинного источника всегда есть **DSN** (_data source name_ — имя источника данных)\n2. **Файловые источники** — таблицы, текстовые документы, PDF-файлы, изображения, аудио и видео. Такие файлы не прикреплены к конкретным компьютерам, приложениям, системам или пользователям. Их можно свободно распространять среди устройств. В отличие от машинных источников, у них нет DSN\n\n### Исследование данных\n\nСледующий шаг — изучить собранные данные (датасет). Здесь аналитик должен разобраться, какие преобразования нужно сделать с датасетом, чтобы подготовить его для конечных пользователей.\n\nДругими словами, на этом этапе происходит **профилирование данных**. Во время него аналитик идентифицируют паттерны и взаимосвязи, ищет аномалии, замечает пропущенные значения и другие проблемы, на которые надо обратить внимание.\n\n### Очистка данных\n\nДалее аналитик исправляет найденные ошибки:\n\n* Дубли\n* Пропущенные значения\n* Выбросы\n* Неверный формат данных\n\nИсправив все ошибки, мы создаем полный и точный датасет.\n\n### Структурирование или группировка данных\n\nДалее аналитик подстраивает чистый датасет под конкретную ситуацию.\n\nДля примера представим, что мы получаем данные в формате CSV (_comma-separated values_). Мы хотим проанализировать их с помощью BI-инструментов, но сходу сделать это не получится. Чтобы BI-инструменты смогли корректно считать и использовать их, нужно конвертировать CSV в таблицу.\n\nРаботать с неструктурированными данными неудобно. Например, в сырых данных о покупках одна строка может содержать информацию сразу о нескольких товарах:\n\n\n\nЧтобы стало удобнее, нужно разделить товары и разместить каждый купленный продукт в отдельной строке:\n\n\n\nМожно сделать данные еще понятнее. Например, человеку сложно воспринимать вот такие данные:\n\n\n\nБудет гораздо проще, если мы возьмем номера магазинов и покупателей и заменим их на понятные имена:\n\n\n\nДля этого разобьем исходные данные на три источника — таблицы _Shops_, _Customers_ и _Products_:\n\n\n\n\n\n\n\n### Трансформация и обогащение данных\n\nВ дополнение к структурированию данных, датасет часто нужно трансформировать в однородный и используемый формат.\n\nНапример, во время трансформации данных мы можем создать новые столбцы или удалять старые, а также агрегировать значения из уже существующих столбцов.\n\n### Валидация данных и их сохранение\n\nНа финальном шаге остается проверить содержание, полноту и точность данных.\n\nДалее подготовленные данные можно использовать так, как нам нужно: например, проанализировать самостоятельно или передать коллеге.\n\n## Как подключаться к источникам данных\n\nК машинным источникам данных можно подключиться с помощью **коннекторов** (_Data Source Connectors_). Коннекторы запускают поток данных между приложениями, базами данных или аналитическими инструментами.\n\nРаботать таким образом намного удобнее, потому что коннекторы предоставляют однородную платформу, где данные из разных приложений встречаются и взаимодействуют.\n\nДля примера представим, что мы отслеживаем рабочее время сотрудников через Jira и хотим создать отчет с помощью Tableau. Чтобы это сделать создадим новую книгу в Tableau и выберем, с каким источником соединиться:\n\n\n\nТо же самое можно сделать в Microsoft Excel:\n\n\n\n## Выводы\n\nВ этом уроке вы узнали, что повышение качества данных — это необходимый предварительный шаг, без которого грамотная аналитика невозможна. Теперь вы умеете самостоятельно готовить данные к полноценному анализу, ведь мы изучили все этапы этого процесса — сбор, исследование, очистку, структурирование, трансформацию и валидацию.\n"},"lessonMember":null,"courseMember":null,"course":{"start_lesson":{"exercise":null,"units":[{"id":7033,"name":"theory","url":"/courses/data-analytics-basics/lessons/intro/theory_unit"}],"links":[],"ordered_units":[{"id":7033,"name":"theory","url":"/courses/data-analytics-basics/lessons/intro/theory_unit"}],"id":3101,"slug":"intro","state":"approved","name":"Введение","course_order":100,"goal":"Знакомимся с темой курса","self_study":null,"theory_video_provider":null,"theory_video_uid":null,"theory":"Этот курс посвящен одному из важных направлений по работе с данными — аналитике.\n\nИз уроков этого курса вы узнаете:\n\n* Кто такие аналитики данных\n* Какие задачи они решают\n* Как анализ данных помогает бизнесу\n* Какие инструменты используют аналитики данных в своей работе\n\nПосле завершения данного курса вы научитесь:\n\n* Работать с Google-таблицами и использовать формулы\n* Визуализировать результаты аналитики с помощью графиков и сводных таблиц\n* Использовать разные базы данных и другие источники\n* Использовать базовый функционал Python и SQL для работы с данными\n\nТакже на курсе мы повторим основные математические понятия, которые необходимы для работы с данными. Так вы сможете создавать более оптимальные алгоритмы и сделаете свою работу более эффективной.\n\n## Зачем изучать аналитику данных\n\nЗа последние десятилетия стало использоваться все больше айти-систем. Как следствие, и объемы используемых данных увеличились в тысячи раз.\nЕще 30 лет назад система с объемом данных в 1 терабайт считалась огромной. Тогда ее могли себе позволить только крупнейшие мировые компании, а сейчас — это объем памяти в обычном домашнем компьютере. Сейчас в крупных компаниях уже используются системы с объемами в десятки петабайт — это десятки тысяч терабайт.\n\nТакие огромные объемы данных повлекли за собой развитие айти-индустрии, ведь данные нужно как-то хранить, обрабатывать и анализировать. Так появилось одно из новых направлений — работа с данными. Его можно разделить на несколько отдельных сфер:\n\n* Моделирование данных (Data Modeling)\n* Инженерия данных (Data Engineering)\n* Искусственный интеллект (Data Science)\n* Аналитика данных (Data Analysis)\n\nВ этом курсе мы подробно остановимся на последнем пункте этого списка. Обычно аналитика данных проходит пять итерационных этапов:\n\n* Определение данных, которые нужно проанализировать\n* Сбор данных\n* Очистка данных при подготовке к анализу\n* Анализ данных\n* Интерпретация результатов анализа\n\nСам анализ данных может принимать разные формы, в зависимости от вопроса, на который вы пытаетесь ответить:\n\n* Описательный анализ — «Что произошло?»\n* Диагностический анализ — «Почему это произошло?»\n* Предиктивный анализ — «Что может произойти в будущем?»\n* Предписывающий анализ — «Что нам с этим делать?»\n\nВсеми этими задачами занимается аналитик данных. Его задача — помочь бизнесу ответить на эти вопросы. Чтобы это сделать аналитику нужно знать:\n\n* Какие системы используются в том или ином бизнес-процессе\n* Какие данные находятся в этих системах\n* Как получить данные из систем\n* Что нужно сделать с этими данными, что бы они стали пригодны для обработки и анализа\n* Как анализировать данные\n* Как интерпретировать результаты и представить их в виде отчетов, графиков и прочих форм\n\nАналитик данных это очень важная и нужная роль практически в любой компании. С их помощью бизнес-подразделения компаний могут существенно облегчить себе жизнь.\nСвоевременный сбор и анализ данных помогает при анализе продаж и при планировании закупок и во многих других процессах.\n"},"id":292,"slug":"data-analytics-basics","challenges_count":3,"name":"Введение в дата-аналитику","allow_indexing":true,"state":"approved","course_state":"finished","pricing_type":"free","description":"В этом курсе вы поймете, кто такой дата-аналитик и какие задачи он выполняет. Вы узнаете больше о данных и познакомитесь с инструментами, которые используют в работе с ними. Также вы научитесь делать сводные таблицы и графики в Google Sheets. Знания из этого курса помогут выполнять базовые аналитические задачи.","kind":"basic","updated_at":"2026-02-20T20:36:36.463Z","language":"other","duration_cache":11220,"skills":["Узнаете, что такое данные и как помогают бизнесу","Разберетесь, чем занимаются аналитики данных разных направлений","Научитесь работать в Google Sheets, писать простые формулы и решать задачи с помощью графиков","Познакомитесь с SQL и напишите первый запрос к базе данных","Узнаете, как используется Python в аналитике"],"keywords":[],"lessons_count":10,"cover":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjIwNSwicHVyIjoiYmxvYl9pZCJ9fQ==--7f3b47ea43a65155e4b857969f7c4137234b5e4f/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fZmlsbCI6WzYwMCw0MDBdfSwicHVyIjoidmFyaWF0aW9uIn19--6067466c2912ca31a17eddee04b8cf2a38c6ad17/image.png"},"recommendedLandings":[{"stack":{"id":55,"slug":"data-analytics","title":"Аналитик данных","audience":"for_beginners","start_type":"weekly","pricing_model":"purchase","priority":"high","kind":"profession","state":"published","stack_state":"finished","order":80,"duration_in_months":7},"id":98,"slug":"data-analytics","title":"Аналитик данных","subtitle":"Изучите SQL, Python, Pandas, Tableau, Superset и методы A/B-тестов.","subtitle_for_lists":"Изучите SQL, Python, Pandas, Tableau, Superset и методы A/B-тестов.","locale":"ru","current":true,"duration_in_months_text":"7 месяцев","stack_slug":"data-analytics","price_text":"от 4 395 ₽","duration_text":"7 месяцев","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzY1MywicHVyIjoiYmxvYl9pZCJ9fQ==--5107185de77b3481e0a836f9fc7326c4e1b77be4/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Data%20extraction-pana.png"},{"stack":{"id":119,"slug":"data-analytics-basics-free","title":"Основы аналитики данных","audience":"for_beginners","start_type":"anytime","pricing_model":"free","priority":"low","kind":"track","state":"published","stack_state":"finished","order":1000,"duration_in_months":1},"id":196,"slug":"data-analytics-basics-free","title":"Основы аналитики данных","subtitle":"Изучите анализ данных, формулы и визуализацию в Google Sheets","subtitle_for_lists":"","locale":"ru","current":true,"duration_in_months_text":"1 месяц","stack_slug":"data-analytics-basics-free","price_text":"Бесплатно","duration_text":"1 месяц","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzk1NSwicHVyIjoiYmxvYl9pZCJ9fQ==--1c8f7302c065771c5d7e80ddb88ca12990da198b/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Analytics-bro.png"},{"stack":{"id":227,"slug":"bi-analyst","title":"BI-аналитик","audience":"for_beginners","start_type":"weekly","pricing_model":"purchase","priority":"high","kind":"profession","state":"published","stack_state":"not_finished","order":null,"duration_in_months":7},"id":359,"slug":"bi-analyst","title":"BI-аналитик","subtitle":"Изучите SQL, BI-инструменты и визуализацию данных","subtitle_for_lists":"Изучите SQL, BI-инструменты и визуализацию данных","locale":"ru","current":true,"duration_in_months_text":"7 месяцев","stack_slug":"bi-analyst","price_text":"от 4 395 ₽","duration_text":"7 месяцев","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDg3MSwicHVyIjoiYmxvYl9pZCJ9fQ==--8175585f43b5401994e29b3ae73d76963d942512/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Browser%20stats-bro.png"},{"stack":{"id":462,"slug":"product-analyst","title":"Продуктовый аналитик","audience":"for_beginners","start_type":"weekly","pricing_model":"purchase","priority":"high","kind":"profession","state":"published","stack_state":"not_finished","order":500,"duration_in_months":7},"id":591,"slug":"product-analyst","title":"Продуктовый аналитик","subtitle":"Изучите продуктовые метрики, A/B-тесты и анализ пользовательских данных","subtitle_for_lists":"Изучите продуктовые метрики, A/B-тесты и анализ пользовательских данных","locale":"ru","current":true,"duration_in_months_text":"7 месяцев","stack_slug":"product-analyst","price_text":"от 4 395 ₽","duration_text":"7 месяцев","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDg2MiwicHVyIjoiYmxvYl9pZCJ9fQ==--04a703ca18d7bf689064f1f3c2721058bd5564e4/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Statistics-bro.png"}],"lessonMemberUnit":null,"accessToLearnUnitExists":true,"accessToCourseExists":true},"url":"/courses/data-analytics-basics/lessons/data-sources/theory_unit","version":"0b0c6d4ebbd40fd58630a0dd89cc25544ccdf24e","encryptHistory":false,"clearHistory":false}"><style data-mantine-styles="true">:root, :host{--mantine-font-family: Arial, sans-serif;--mantine-font-family-headings: Arial, sans-serif;--mantine-heading-font-weight: normal;--mantine-radius-default: 0rem;--mantine-primary-color-filled: var(--mantine-color-indigo-filled);--mantine-primary-color-filled-hover: var(--mantine-color-indigo-filled-hover);--mantine-primary-color-light: var(--mantine-color-indigo-light);--mantine-primary-color-light-hover: var(--mantine-color-indigo-light-hover);--mantine-primary-color-light-color: var(--mantine-color-indigo-light-color);--mantine-spacing-xxl: calc(4rem * var(--mantine-scale));--mantine-font-size-xs: 12px;--mantine-font-size-sm: 14px;--mantine-font-size-md: 16px;--mantine-font-size-lg: clamp(16.0000px, calc(15.2727px + 0.2273vw), 18.0000px);--mantine-font-size-xl: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-display-3: clamp(32.0000px, calc(26.1818px + 1.8182vw), 48.0000px);--mantine-font-size-display-2: clamp(36.0000px, calc(25.8182px + 3.1818vw), 64.0000px);--mantine-font-size-display-1: clamp(40.0000px, calc(25.4545px + 4.5455vw), 80.0000px);--mantine-font-size-h1: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-font-size-h2: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-font-size-h3: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-font-size-h4: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-font-size-h5: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-h6: 1rem;--mantine-primary-color-0: var(--mantine-color-indigo-0);--mantine-primary-color-1: var(--mantine-color-indigo-1);--mantine-primary-color-2: var(--mantine-color-indigo-2);--mantine-primary-color-3: var(--mantine-color-indigo-3);--mantine-primary-color-4: var(--mantine-color-indigo-4);--mantine-primary-color-5: var(--mantine-color-indigo-5);--mantine-primary-color-6: var(--mantine-color-indigo-6);--mantine-primary-color-7: var(--mantine-color-indigo-7);--mantine-primary-color-8: var(--mantine-color-indigo-8);--mantine-primary-color-9: var(--mantine-color-indigo-9);--mantine-color-red-0: #ffeaea;--mantine-color-red-1: #fed4d4;--mantine-color-red-2: #f4a7a8;--mantine-color-red-3: #ec7878;--mantine-color-red-4: #e55050;--mantine-color-red-5: #e03131;--mantine-color-red-6: #e02829;--mantine-color-red-7: #c71a1c;--mantine-color-red-8: #b21218;--mantine-color-red-9: #9c0411;--mantine-color-violet-0: #fce9ff;--mantine-color-violet-1: #f1cfff;--mantine-color-violet-2: #e09bff;--mantine-color-violet-3: #d16fff;--mantine-color-violet-4: #be37fe;--mantine-color-violet-5: #b51afe;--mantine-color-violet-6: #b009ff;--mantine-color-violet-7: #9b00e4;--mantine-color-violet-8: #8a00cc;--mantine-color-violet-9: #7800b3;--mantine-color-indigo-0: #edecff;--mantine-color-indigo-1: #d6d5fe;--mantine-color-indigo-2: #aaa9f4;--mantine-color-indigo-3: #7b79eb;--mantine-color-indigo-4: #5451e4;--mantine-color-indigo-5: #3b37e0;--mantine-color-indigo-6: #2d2adf;--mantine-color-indigo-7: #1f1ec7;--mantine-color-indigo-8: #1819b2;--mantine-color-indigo-9: #0c149e;--mantine-color-cyan-0: #dffdff;--mantine-color-cyan-1: #caf5ff;--mantine-color-cyan-2: #99e8ff;--mantine-color-cyan-3: #64daff;--mantine-color-cyan-4: #3ccffe;--mantine-color-cyan-5: #24c8fe;--mantine-color-cyan-6: #00c2ff;--mantine-color-cyan-7: #00ade4;--mantine-color-cyan-8: #009acd;--mantine-color-cyan-9: #0085b5;--mantine-color-green-0: #e9fdec;--mantine-color-green-1: #d7f6dc;--mantine-color-green-2: #b0eab9;--mantine-color-green-3: #86df94;--mantine-color-green-4: #62d574;--mantine-color-green-5: #4ccf5f;--mantine-color-green-6: #3fcc54;--mantine-color-green-7: #2fb344;--mantine-color-green-8: #25a03b;--mantine-color-green-9: #138a2e;--mantine-color-yellow-0: #fff7e2;--mantine-color-yellow-1: #ffeecd;--mantine-color-yellow-2: #ffdc9c;--mantine-color-yellow-3: #ffc966;--mantine-color-yellow-4: #feb93a;--mantine-color-yellow-5: #feae1e;--mantine-color-yellow-6: #ffa90f;--mantine-color-yellow-8: #ca8200;--mantine-color-yellow-9: #af7000;--mantine-h1-font-size: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-h1-font-weight: normal;--mantine-h2-font-size: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-h2-font-weight: normal;--mantine-h3-font-size: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-h3-font-weight: normal;--mantine-h4-font-size: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-h4-font-weight: normal;--mantine-h5-font-size: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-h5-font-weight: normal;--mantine-h6-font-size: 1rem;--mantine-h6-font-weight: normal;}
:root[data-mantine-color-scheme="dark"], :host([data-mantine-color-scheme="dark"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-dark-filled: var(--mantine-color-dark-5);--mantine-color-dark-filled-hover: var(--mantine-color-dark-6);--mantine-color-dark-light: rgba(105, 105, 105, 0.15);--mantine-color-dark-light-hover: rgba(105, 105, 105, 0.2);--mantine-color-dark-light-color: var(--mantine-color-dark-0);--mantine-color-dark-outline: var(--mantine-color-dark-1);--mantine-color-dark-outline-hover: rgba(184, 184, 184, 0.05);--mantine-color-gray-filled: var(--mantine-color-gray-5);--mantine-color-gray-filled-hover: var(--mantine-color-gray-6);--mantine-color-gray-light: rgba(222, 226, 230, 0.15);--mantine-color-gray-light-hover: rgba(222, 226, 230, 0.2);--mantine-color-gray-light-color: var(--mantine-color-gray-0);--mantine-color-gray-outline: var(--mantine-color-gray-1);--mantine-color-gray-outline-hover: rgba(241, 243, 245, 0.05);--mantine-color-red-filled: var(--mantine-color-red-5);--mantine-color-red-filled-hover: var(--mantine-color-red-6);--mantine-color-red-light: rgba(236, 120, 120, 0.15);--mantine-color-red-light-hover: rgba(236, 120, 120, 0.2);--mantine-color-red-light-color: var(--mantine-color-red-0);--mantine-color-red-outline: var(--mantine-color-red-1);--mantine-color-red-outline-hover: rgba(254, 212, 212, 0.05);--mantine-color-pink-filled: var(--mantine-color-pink-5);--mantine-color-pink-filled-hover: var(--mantine-color-pink-6);--mantine-color-pink-light: rgba(250, 162, 193, 0.15);--mantine-color-pink-light-hover: rgba(250, 162, 193, 0.2);--mantine-color-pink-light-color: var(--mantine-color-pink-0);--mantine-color-pink-outline: var(--mantine-color-pink-1);--mantine-color-pink-outline-hover: rgba(255, 222, 235, 0.05);--mantine-color-grape-filled: var(--mantine-color-grape-5);--mantine-color-grape-filled-hover: var(--mantine-color-grape-6);--mantine-color-grape-light: rgba(229, 153, 247, 0.15);--mantine-color-grape-light-hover: rgba(229, 153, 247, 0.2);--mantine-color-grape-light-color: var(--mantine-color-grape-0);--mantine-color-grape-outline: var(--mantine-color-grape-1);--mantine-color-grape-outline-hover: rgba(243, 217, 250, 0.05);--mantine-color-violet-filled: var(--mantine-color-violet-5);--mantine-color-violet-filled-hover: var(--mantine-color-violet-6);--mantine-color-violet-light: rgba(209, 111, 255, 0.15);--mantine-color-violet-light-hover: rgba(209, 111, 255, 0.2);--mantine-color-violet-light-color: var(--mantine-color-violet-0);--mantine-color-violet-outline: var(--mantine-color-violet-1);--mantine-color-violet-outline-hover: rgba(241, 207, 255, 0.05);--mantine-color-indigo-filled: var(--mantine-color-indigo-5);--mantine-color-indigo-filled-hover: var(--mantine-color-indigo-6);--mantine-color-indigo-light: rgba(123, 121, 235, 0.15);--mantine-color-indigo-light-hover: rgba(123, 121, 235, 0.2);--mantine-color-indigo-light-color: var(--mantine-color-indigo-0);--mantine-color-indigo-outline: var(--mantine-color-indigo-1);--mantine-color-indigo-outline-hover: rgba(214, 213, 254, 0.05);--mantine-color-blue-filled: var(--mantine-color-blue-5);--mantine-color-blue-filled-hover: var(--mantine-color-blue-6);--mantine-color-blue-light: rgba(116, 192, 252, 0.15);--mantine-color-blue-light-hover: rgba(116, 192, 252, 0.2);--mantine-color-blue-light-color: var(--mantine-color-blue-0);--mantine-color-blue-outline: var(--mantine-color-blue-1);--mantine-color-blue-outline-hover: rgba(208, 235, 255, 0.05);--mantine-color-cyan-filled: var(--mantine-color-cyan-5);--mantine-color-cyan-filled-hover: var(--mantine-color-cyan-6);--mantine-color-cyan-light: rgba(100, 218, 255, 0.15);--mantine-color-cyan-light-hover: rgba(100, 218, 255, 0.2);--mantine-color-cyan-light-color: var(--mantine-color-cyan-0);--mantine-color-cyan-outline: var(--mantine-color-cyan-1);--mantine-color-cyan-outline-hover: rgba(202, 245, 255, 0.05);--mantine-color-teal-filled: var(--mantine-color-teal-5);--mantine-color-teal-filled-hover: var(--mantine-color-teal-6);--mantine-color-teal-light: rgba(99, 230, 190, 0.15);--mantine-color-teal-light-hover: rgba(99, 230, 190, 0.2);--mantine-color-teal-light-color: var(--mantine-color-teal-0);--mantine-color-teal-outline: var(--mantine-color-teal-1);--mantine-color-teal-outline-hover: rgba(195, 250, 232, 0.05);--mantine-color-green-filled: var(--mantine-color-green-5);--mantine-color-green-filled-hover: var(--mantine-color-green-6);--mantine-color-green-light: rgba(134, 223, 148, 0.15);--mantine-color-green-light-hover: rgba(134, 223, 148, 0.2);--mantine-color-green-light-color: var(--mantine-color-green-0);--mantine-color-green-outline: var(--mantine-color-green-1);--mantine-color-green-outline-hover: rgba(215, 246, 220, 0.05);--mantine-color-lime-filled: var(--mantine-color-lime-5);--mantine-color-lime-filled-hover: var(--mantine-color-lime-6);--mantine-color-lime-light: rgba(192, 235, 117, 0.15);--mantine-color-lime-light-hover: rgba(192, 235, 117, 0.2);--mantine-color-lime-light-color: var(--mantine-color-lime-0);--mantine-color-lime-outline: var(--mantine-color-lime-1);--mantine-color-lime-outline-hover: rgba(233, 250, 200, 0.05);--mantine-color-yellow-filled: var(--mantine-color-yellow-5);--mantine-color-yellow-filled-hover: var(--mantine-color-yellow-6);--mantine-color-yellow-light: rgba(255, 201, 102, 0.15);--mantine-color-yellow-light-hover: rgba(255, 201, 102, 0.2);--mantine-color-yellow-light-color: var(--mantine-color-yellow-0);--mantine-color-yellow-outline: var(--mantine-color-yellow-1);--mantine-color-yellow-outline-hover: rgba(255, 238, 205, 0.05);--mantine-color-orange-filled: var(--mantine-color-orange-5);--mantine-color-orange-filled-hover: var(--mantine-color-orange-6);--mantine-color-orange-light: rgba(255, 192, 120, 0.15);--mantine-color-orange-light-hover: rgba(255, 192, 120, 0.2);--mantine-color-orange-light-color: var(--mantine-color-orange-0);--mantine-color-orange-outline: var(--mantine-color-orange-1);--mantine-color-orange-outline-hover: rgba(255, 232, 204, 0.05);--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-9) 0%, var(--mantine-color-cyan-7) 100%);--app-color-surface: #2e2e2e;}
:root[data-mantine-color-scheme="light"], :host([data-mantine-color-scheme="light"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-red-light: rgba(224, 40, 41, 0.1);--mantine-color-red-light-hover: rgba(224, 40, 41, 0.12);--mantine-color-red-outline-hover: rgba(224, 40, 41, 0.05);--mantine-color-violet-light: rgba(176, 9, 255, 0.1);--mantine-color-violet-light-hover: rgba(176, 9, 255, 0.12);--mantine-color-violet-outline-hover: rgba(176, 9, 255, 0.05);--mantine-color-indigo-light: rgba(45, 42, 223, 0.1);--mantine-color-indigo-light-hover: rgba(45, 42, 223, 0.12);--mantine-color-indigo-outline-hover: rgba(45, 42, 223, 0.05);--mantine-color-cyan-light: rgba(0, 194, 255, 0.1);--mantine-color-cyan-light-hover: rgba(0, 194, 255, 0.12);--mantine-color-cyan-outline-hover: rgba(0, 194, 255, 0.05);--mantine-color-green-light: rgba(63, 204, 84, 0.1);--mantine-color-green-light-hover: rgba(63, 204, 84, 0.12);--mantine-color-green-outline-hover: rgba(63, 204, 84, 0.05);--mantine-color-yellow-light: rgba(255, 169, 15, 0.1);--mantine-color-yellow-light-hover: rgba(255, 169, 15, 0.12);--mantine-color-yellow-outline-hover: rgba(255, 169, 15, 0.05);--app-color-surface: #f1f3f5;--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-5) 100%);}</style><style data-mantine-styles="classes">@media (max-width: 35.99375em) {.mantine-visible-from-xs {display: none !important;}}@media (min-width: 36em) {.mantine-hidden-from-xs {display: none !important;}}@media (max-width: 47.99375em) {.mantine-visible-from-sm {display: none !important;}}@media (min-width: 48em) {.mantine-hidden-from-sm {display: none !important;}}@media (max-width: 61.99375em) {.mantine-visible-from-md {display: none !important;}}@media (min-width: 62em) {.mantine-hidden-from-md {display: none !important;}}@media (max-width: 74.99375em) {.mantine-visible-from-lg {display: none !important;}}@media (min-width: 75em) {.mantine-hidden-from-lg {display: none !important;}}@media (max-width: 87.99375em) {.mantine-visible-from-xl {display: none !important;}}@media (min-width: 88em) {.mantine-hidden-from-xl {display: none !important;}}</style><div style="position:absolute;top:0rem" class=""></div><div style="max-width:var(--container-size-xl);height:100%;min-height:0rem" class=""><style data-mantine-styles="inline">.__m__-_R_5ub_{--grid-gutter:0rem;}</style><div style="height:100%;min-height:0rem" class="m_410352e9 mantine-Grid-root __m__-_R_5ub_"><div class="m_dee7bd2f mantine-Grid-inner" style="height:100%"><style data-mantine-styles="inline">.__m__-_R_rdub_{--col-flex-grow:auto;--col-flex-basis:91.66666666666667%;--col-max-width:91.66666666666667%;}@media(min-width: 48em){.__m__-_R_rdub_{--col-flex-grow:auto;--col-flex-basis:83.33333333333334%;--col-max-width:83.33333333333334%;}}</style><div style="min-width:0rem;height:100%;min-height:0rem;display:flex" class="m_96bdd299 mantine-Grid-col __m__-_R_rdub_"><style data-mantine-styles="inline">.__m__-_R_6qrdub_{margin-top:0rem;padding-inline:var(--mantine-spacing-xs);width:100%;}@media(min-width: 48em){.__m__-_R_6qrdub_{margin-top:var(--mantine-spacing-xl);width:80%;}}@media(min-width: 62em){.__m__-_R_6qrdub_{padding-inline:var(--mantine-spacing-xl);}}</style><div style="margin-inline:auto;max-width:var(--mantine-breakpoint-xl)" class="__m__-_R_6qrdub_"><div style="color:var(--mantine-color-dimmed)" class="m_4451eb3a mantine-Center-root" data-inline="true"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:calc(0.125rem * var(--mantine-scale));color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-lock "><path d="M5 13a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v6a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-6"></path><path d="M11 16a1 1 0 1 0 2 0a1 1 0 0 0 -2 0"></path><path d="M8 11v-4a4 4 0 1 1 8 0v4"></path></svg></div><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Введение в дата-аналитику</p></div><h1 style="--title-fw:var(--mantine-h1-font-weight);--title-lh:var(--mantine-h1-line-height);--title-fz:var(--mantine-h1-font-size);margin-bottom:var(--mantine-spacing-xl)" class="m_8a5d1357 mantine-Title-root" data-order="1">Теория: Источники данных</h1><script type="application/ld+json">{"@context":"https://schema.org","@type":"LearningResource","name":"Источники данных","inLanguage":"ru","isPartOf":{"@type":"LearningResource","name":"Введение в дата-аналитику"},"isAccessibleForFree":"False","hasPart":{"@type":"WebPageElement","isAccessibleForFree":"False","cssSelector":".paywalled"}}</script><div class=""><div style="--alert-color:var(--mantine-color-indigo-light-color);margin-bottom:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-lg)" class="m_66836ed3 mantine-Alert-root" id="mantine-_R_remqrdub_" role="alert" aria-describedby="mantine-_R_remqrdub_-body" aria-labelledby="mantine-_R_remqrdub_-title"><div class="m_a5d60502 mantine-Alert-wrapper"><div class="m_667f2a6a mantine-Alert-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-rocket "><path d="M4 13a8 8 0 0 1 7 7a6 6 0 0 0 3 -5a9 9 0 0 0 6 -8a3 3 0 0 0 -3 -3a9 9 0 0 0 -8 6a6 6 0 0 0 -5 3"></path><path d="M7 14a6 6 0 0 0 -3 6a6 6 0 0 0 6 -3"></path><path d="M14 9a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path></svg></div><div class="m_667c2793 mantine-Alert-body"><div class="m_6a03f287 mantine-Alert-title"><span id="mantine-_R_remqrdub_-title" class="m_698f4f23 mantine-Alert-label">Полный доступ к материалам</span></div><div id="mantine-_R_remqrdub_-body" class="m_7fa78076 mantine-Alert-message"><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Зарегистрируйтесь и получите доступ к этому и десяткам других курсов</p><a style="--button-height:var(--button-height-xs);--button-padding-x:var(--button-padding-x-xs);--button-fz:var(--mantine-font-size-xs);--button-bg:linear-gradient(45deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-filled) 100%);--button-hover:linear-gradient(45deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-filled) 100%);--button-color:var(--mantine-color-white);--button-bd:none" class="mantine-focus-auto mantine-active m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root" data-variant="gradient" data-size="xs" href="/u/new"><span class="m_80f1301b mantine-Button-inner"><span class="m_811560b9 mantine-Button-label">Зарегистрироваться</span></span></a></div></div></div></div></div><div class="paywalled m_d08caa0 mantine-Typography-root"><p>В работе аналитика существенную роль играет качество данных. Часто эту важную роль описывают через <strong>принцип GIGO</strong> (<em>garbage in, garbage out</em>) — «мусор на входе, мусор на выходе». Если мы не обработаем источники данных до начала анализа, то пользы от самого анализа не будет.</p>
<p>Сегодня мы узнаем, как подготовить данные к дальнейшему использованию и почему это важно.</p>
<h2 id="heading-2-1">Что такое источник данных</h2>
<p><strong>Источник данных</strong> — это физическая или цифровая локация, где данные хранятся в виде таблицы, файла или в другом формате.</p>
<p><strong>Таблица</strong> — это пример <strong>модели данных</strong> или <strong>логической структуры</strong>. Именно при помощи таблиц мы организуем данные, то есть моделируем их в источнике по определенной схеме. Таблица помогает иллюстрировать взаимоотношения между разными элементами и управлять данными без их искажения.</p>
<p>База данных тоже считается моделью данных, потому что она состоит из множества взаимосвязанных таблиц. Кроме того, существуют такие распространенные модели:</p>
<ul>
<li>Иерархическая модель</li>
<li>Реляционная модель</li>
</ul>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjI5MiwicHVyIjoiYmxvYl9pZCJ9fQ==--1647736a221b1298fc121aab66873dae23752ee3/relations.png" alt="Пример структуры реляционной БД" loading="lazy"/></p>
<ul>
<li>Унифицированный язык моделирования (<em>UML</em> или <em>Unified Modeling Language</em>)</li>
<li>Диаграмма «Сущность-связь» (<em>ERD</em> или <em>Entity-Relationship Diagram</em>)</li>
<li>Объектно-ориентированная модель</li>
<li>Многомерное моделирование</li>
</ul>
<h3 id="heading-3-2">Как работает принцип GIGO</h3>
<p>Чтобы проиллюстрировать принцип GIGO, возьмем таблицу <em>Orders</em> с данными по заказам клиентов. Если интересно, можете изучить оригинал на сайте <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://public.tableau.com/app/profile/pradeepkumar.g/viz/SampleSuperstore-SalesPerformance/viz_" rel="noopener noreferrer" target="_blank">Tableau Public</a>.</p>
<p>Представим, что мы хотим изучить данные клиента по имени <em>Aaron Bergman</em>. Чистые и подготовленные данные продаж по этому клиенту выглядят так:</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjI5MywicHVyIjoiYmxvYl9pZCJ9fQ==--7b93f38abc8da8f677e19c8fff52b43bfcf352a8/1.png" alt="1" loading="lazy"/></p>
<p>Грязные данные заметно отличаются:</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjI5NCwicHVyIjoiYmxvYl9pZCJ9fQ==--8273f0d3e63e4b8ce0ca8b865b294e0d7f576ae5/2.png" alt="2" loading="lazy"/></p>
<p>Возьмем другой пример. Предположим, мы хотим взглянуть на продажи клиенту в разных городах. Визуализация этих данных в <em>Tableau</em> отобразит корректную сумму продаж:</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjI5NSwicHVyIjoiYmxvYl9pZCJ9fQ==--fb480852f7385800747db9aa518cfdc5b106bab8/3.png" alt="3" loading="lazy"/></p>
<p>При визуализации замусоренных данных мы получим другой результат:</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjI5NiwicHVyIjoiYmxvYl9pZCJ9fQ==--05c6ba05cf0b8f32cfd7f7de63c08aa6f150d3c8/4.png" alt="4" loading="lazy"/></p>
<p>Как видите, замусоренные данные заметно отличаются от чистых. Все дело в неправильно заполненных полях. Из-за орфографических ошибок мы видим пять городов, хотя на самом деле их три — Оклахома, Сиэтл и Арлингтон.</p>
<p>Из-за этой ошибки суммы продаж сильно завышены. Значит, и общие выводы будут искажены. Чтобы избежать таких проблем, нужно заранее проверять качество данных и проводить подготовку.</p>
<h2 id="heading-2-3">Как подготовить данные</h2>
<p>Рассмотрим этапы подготовки:</p>
<ol>
<li>Сбор данных</li>
<li>Исследование и профилирование данных</li>
<li>Очистка данных</li>
<li>Структурирование данных</li>
<li>Трансформация и обогащение данных</li>
<li>Валидация данных и их сохранение</li>
</ol>
<h3 id="heading-3-4">Сбор данных</h3>
<p>Релевантные данные собираются из операционных систем, хранилищ, сайтов и прочих ресурсов. На этом этапе мы проверяем, что собранные данные хорошо подходят для целей запланированного анализа данных.</p>
<p>Можно выделить два типа источников:</p>
<ol>
<li><strong>Машинные файлы</strong> — логи интернет-трафика, логи систем и приложений, информация от сенсоров промышленного оборудования, результаты запросов к базе. Такие файлы создаются на клиентском компьютере, телефоне или другом устройстве. Доступ к ним предоставлен пользователям, зарегистрированным в системе. У машинного источника всегда есть <strong>DSN</strong> (<em>data source name</em> — имя источника данных)</li>
<li><strong>Файловые источники</strong> — таблицы, текстовые документы, PDF-файлы, изображения, аудио и видео. Такие файлы не прикреплены к конкретным компьютерам, приложениям, системам или пользователям. Их можно свободно распространять среди устройств. В отличие от машинных источников, у них нет DSN</li>
</ol>
<h3 id="heading-3-5">Исследование данных</h3>
<p>Следующий шаг — изучить собранные данные (датасет). Здесь аналитик должен разобраться, какие преобразования нужно сделать с датасетом, чтобы подготовить его для конечных пользователей.</p>
<p>Другими словами, на этом этапе происходит <strong>профилирование данных</strong>. Во время него аналитик идентифицируют паттерны и взаимосвязи, ищет аномалии, замечает пропущенные значения и другие проблемы, на которые надо обратить внимание.</p>
<h3 id="heading-3-6">Очистка данных</h3>
<p>Далее аналитик исправляет найденные ошибки:</p>
<ul>
<li>Дубли</li>
<li>Пропущенные значения</li>
<li>Выбросы</li>
<li>Неверный формат данных</li>
</ul>
<p>Исправив все ошибки, мы создаем полный и точный датасет.</p>
<h3 id="heading-3-7">Структурирование или группировка данных</h3>
<p>Далее аналитик подстраивает чистый датасет под конкретную ситуацию.</p>
<p>Для примера представим, что мы получаем данные в формате CSV (<em>comma-separated values</em>). Мы хотим проанализировать их с помощью BI-инструментов, но сходу сделать это не получится. Чтобы BI-инструменты смогли корректно считать и использовать их, нужно конвертировать CSV в таблицу.</p>
<p>Работать с неструктурированными данными неудобно. Например, в сырых данных о покупках одна строка может содержать информацию сразу о нескольких товарах:</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjI5NywicHVyIjoiYmxvYl9pZCJ9fQ==--21af12c1e13936ef579386fb8c402f57ec0c7048/5.png" alt="5" loading="lazy"/></p>
<p>Чтобы стало удобнее, нужно разделить товары и разместить каждый купленный продукт в отдельной строке:</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjI5OCwicHVyIjoiYmxvYl9pZCJ9fQ==--55c6288ea7a44b97d19944fd3e3c5516bd76134f/6.png" alt="6" loading="lazy"/></p>
<p>Можно сделать данные еще понятнее. Например, человеку сложно воспринимать вот такие данные:</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjI5OSwicHVyIjoiYmxvYl9pZCJ9fQ==--79e7377f1d180a4a98dfc82066c5fbe3c083ff00/7.png" alt="7" loading="lazy"/></p>
<p>Будет гораздо проще, если мы возьмем номера магазинов и покупателей и заменим их на понятные имена:</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjMwMCwicHVyIjoiYmxvYl9pZCJ9fQ==--1cbe6310e18fbc03ab0e4f59cecac6dafadfb5a4/8.png" alt="8" loading="lazy"/></p>
<p>Для этого разобьем исходные данные на три источника — таблицы <em>Shops</em>, <em>Customers</em> и <em>Products</em>:</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjMwMSwicHVyIjoiYmxvYl9pZCJ9fQ==--73821c4dcc8cb3617ac47b243a6aa47c824fa961/9.png" alt="9" loading="lazy"/></p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjMwMiwicHVyIjoiYmxvYl9pZCJ9fQ==--0882339a282cf45995cf2a8ffd77299c970430d1/10.png" alt="10" loading="lazy"/></p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjMwMywicHVyIjoiYmxvYl9pZCJ9fQ==--9b77035e3711d0216174075173002bb75481ed24/11.png" alt="11" loading="lazy"/></p>
<h3 id="heading-3-8">Трансформация и обогащение данных</h3>
<p>В дополнение к структурированию данных, датасет часто нужно трансформировать в однородный и используемый формат.</p>
<p>Например, во время трансформации данных мы можем создать новые столбцы или удалять старые, а также агрегировать значения из уже существующих столбцов.</p>
<h3 id="heading-3-9">Валидация данных и их сохранение</h3>
<p>На финальном шаге остается проверить содержание, полноту и точность данных.</p>
<p>Далее подготовленные данные можно использовать так, как нам нужно: например, проанализировать самостоятельно или передать коллеге.</p>
<h2 id="heading-2-10">Как подключаться к источникам данных</h2>
<p>К машинным источникам данных можно подключиться с помощью <strong>коннекторов</strong> (<em>Data Source Connectors</em>). Коннекторы запускают поток данных между приложениями, базами данных или аналитическими инструментами.</p>
<p>Работать таким образом намного удобнее, потому что коннекторы предоставляют однородную платформу, где данные из разных приложений встречаются и взаимодействуют.</p>
<p>Для примера представим, что мы отслеживаем рабочее время сотрудников через Jira и хотим создать отчет с помощью Tableau. Чтобы это сделать создадим новую книгу в Tableau и выберем, с каким источником соединиться:</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjMwNSwicHVyIjoiYmxvYl9pZCJ9fQ==--5763f6b55beb2ea33822097ca51493445f02f787/12.png" alt="12" loading="lazy"/></p>
<p>То же самое можно сделать в Microsoft Excel:</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjMwNiwicHVyIjoiYmxvYl9pZCJ9fQ==--3ba00079a2ad9a41ad2baba8d26cc984962276e1/13.png" alt="13" loading="lazy"/></p>
<h2 id="heading-2-11">Выводы</h2>
<p>В этом уроке вы узнали, что повышение качества данных — это необходимый предварительный шаг, без которого грамотная аналитика невозможна. Теперь вы умеете самостоятельно готовить данные к полноценному анализу, ведь мы изучили все этапы этого процесса — сбор, исследование, очистку, структурирование, трансформацию и валидацию.</p></div><div style="margin-block:var(--mantine-spacing-xl)" class=""><h2 style="--title-fw:var(--mantine-h2-font-weight);--title-lh:var(--mantine-h2-line-height);--title-fz:var(--mantine-h2-font-size);margin-bottom:var(--mantine-spacing-md)" class="m_8a5d1357 mantine-Title-root" data-order="2">Рекомендуемые программы</h2><style data-mantine-styles="inline">.__m__-_R_2mremqrdub_{--carousel-slide-gap:var(--mantine-spacing-xs);--carousel-slide-size:70%;}@media(min-width: 36em){.__m__-_R_2mremqrdub_{--carousel-slide-gap:var(--mantine-spacing-xl);--carousel-slide-size:50%;}}</style><div style="--carousel-control-size:calc(2.5rem * var(--mantine-scale));--carousel-controls-offset:var(--mantine-spacing-sm);margin-bottom:var(--mantine-spacing-lg);padding-block:var(--mantine-spacing-sm);background:var(--app-color-surface)" class="m_17884d0f mantine-Carousel-root responsiveClassName" data-orientation="horizontal" data-include-gap-in-size="true"><div class="m_39bc3463 mantine-Carousel-controls" data-orientation="horizontal"><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="previous" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="next" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(-90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button></div><div class="m_a2dae653 mantine-Carousel-viewport" data-type="media"><div class="m_fcd81474 mantine-Carousel-container __m__-_R_2mremqrdub_" data-orientation="horizontal"><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/data-analytics?promo_name=programs_list&promo_position=course&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">7 месяцев</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">С нуля</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Аналитик данных</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Изучите SQL, Python, Pandas, Tableau, Superset и методы A/B-тестов.</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzY1MywicHVyIjoiYmxvYl9pZCJ9fQ==--5107185de77b3481e0a836f9fc7326c4e1b77be4/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Data%20extraction-pana.png" alt="Аналитик данных" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 4 395 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/data-analytics-basics-free?promo_name=programs_list&promo_position=course&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">1 месяц</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">С нуля</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Основы аналитики данных</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root"></p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzk1NSwicHVyIjoiYmxvYl9pZCJ9fQ==--1c8f7302c065771c5d7e80ddb88ca12990da198b/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Analytics-bro.png" alt="Основы аналитики данных" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Бесплатно</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/bi-analyst?promo_name=programs_list&promo_position=course&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">7 месяцев</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">С нуля</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">BI-аналитик</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Изучите SQL, BI-инструменты и визуализацию данных</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDg3MSwicHVyIjoiYmxvYl9pZCJ9fQ==--8175585f43b5401994e29b3ae73d76963d942512/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Browser%20stats-bro.png" alt="BI-аналитик" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 4 395 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/product-analyst?promo_name=programs_list&promo_position=course&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">7 месяцев</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">С нуля</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Продуктовый аналитик</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Изучите продуктовые метрики, A/B-тесты и анализ пользовательских данных</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDg2MiwicHVyIjoiYmxvYl9pZCJ9fQ==--04a703ca18d7bf689064f1f3c2721058bd5564e4/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Statistics-bro.png" alt="Продуктовый аналитик" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 4 395 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses?promo_name=programs_list&promo_position=course&promo_creative=catalog_card&promo_type=card"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><h2 style="--title-fw:var(--mantine-h2-font-weight);--title-lh:var(--mantine-h2-line-height);--title-fz:var(--mantine-h2-font-size);margin-bottom:var(--mantine-spacing-md);font-size:var(--mantine-font-size-h3)" class="m_8a5d1357 mantine-Title-root" data-order="2" data-responsive="true">Каталог</h2><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Полный список доступных курсов по разным направлениям</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="/vite/assets/development-BVihs_d5.png" alt="Orientation"/></div></div></div></a></div></div></div></div></div></div></div></div></div><style data-mantine-styles="inline">.__m__-_R_1bdub_{--col-flex-grow:auto;--col-flex-basis:8.333333333333334%;--col-max-width:8.333333333333334%;}@media(min-width: 48em){.__m__-_R_1bdub_{--col-flex-grow:auto;--col-flex-basis:16.666666666666668%;--col-max-width:16.666666666666668%;}}</style><div style="min-width:0rem;height:100%;min-height:0rem" class="m_96bdd299 mantine-Grid-col __m__-_R_1bdub_"><div style="margin-inline:var(--mantine-spacing-xs)" class="mantine-visible-from-sm"><a style="--button-color:var(--mantine-color-white);margin-bottom:var(--mantine-spacing-lg);text-decoration:none" class="mantine-focus-auto m_849cf0da mantine-focus-auto m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses/data-analytics-basics/lessons/data-sources/finish_unit?unit=theory" data-disabled="true" data-block="true" disabled=""><span class="m_80f1301b mantine-Button-inner"><span class="m_811560b9 mantine-Button-label"><span style="margin-inline-end:var(--mantine-spacing-xs)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Дальше</span>→</span></span></a><a style="padding-inline:0rem" class="mantine-focus-auto m_f0824112 mantine-NavLink-root m_87cf2631 mantine-UnstyledButton-root"><span class="m_690090b5 mantine-NavLink-section" data-position="left"><div style="--ti-size:var(--ti-size-sm);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-list-numbers "><path d="M11 6h9"></path><path d="M11 12h9"></path><path d="M12 18h8"></path><path d="M4 16a2 2 0 1 1 4 0c0 .591 -.5 1 -1 1.5l-3 2.5h4"></path><path d="M6 10v-6l-2 2"></path></svg></div></span><div class="m_f07af9d2 mantine-NavLink-body"><span class="m_1f6ac4c4 mantine-NavLink-label">Навигация по теме</span><span class="m_57492dcc mantine-NavLink-description">Теория</span></div><span class="m_690090b5 mantine-NavLink-section" data-position="right"></span></a><div style="margin-block:var(--mantine-spacing-lg)" class="m_3eebeb36 mantine-Divider-root" data-orientation="horizontal" role="separator"></div><div style="margin-block:var(--mantine-spacing-lg)" class=""><div style="justify-content:space-between;margin-bottom:calc(0.1875rem * var(--mantine-scale));color:var(--mantine-color-dimmed);font-size:var(--mantine-font-size-xs)" class="m_8bffd616 mantine-Flex-root __m__-_R_qimrbdub_"><p style="font-size:var(--mantine-font-size-xs)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Завершено</p><p style="font-size:var(--mantine-font-size-xs)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">0 / 10</p></div><div style="--progress-size:var(--progress-size-sm)" class="m_db6d6462 mantine-Progress-root" data-size="sm"><div style="--progress-section-size:0%;--progress-section-color:var(--mantine-color-gray-filled)" class="m_2242eb65 mantine-Progress-section" role="progressbar" aria-valuemax="100" aria-valuemin="0" aria-valuenow="0" aria-valuetext="0%"></div></div></div><button style="padding-inline:0rem" class="mantine-focus-auto m_f0824112 mantine-NavLink-root m_87cf2631 mantine-UnstyledButton-root" type="button"><span class="m_690090b5 mantine-NavLink-section" data-position="left"><div style="--ti-size:var(--ti-size-sm);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-message "><path d="M8 9h8"></path><path d="M8 13h6"></path><path d="M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12"></path></svg></div></span><div class="m_f07af9d2 mantine-NavLink-body"><span class="m_1f6ac4c4 mantine-NavLink-label">Обсуждения (архив)</span><span class="m_57492dcc mantine-NavLink-description"></span></div></button><div style="--toc-bg:var(--mantine-color-blue-light);--toc-color:var(--mantine-color-blue-light-color);--toc-size:var(--mantine-font-size-sm);--toc-radius:var(--mantine-radius-sm);margin-top:var(--mantine-spacing-xl)" class="m_bcaa9990 mantine-TableOfContents-root" data-variant="light" data-size="sm"></div></div><div class="mantine-hidden-from-sm"><div style="--stack-gap:0rem;--stack-align:stretch;--stack-justify:flex-start" class="m_6d731127 mantine-Stack-root"><a style="--button-color:var(--mantine-color-white);margin-bottom:var(--mantine-spacing-xs);padding:0rem;text-decoration:none" class="mantine-focus-auto m_849cf0da mantine-focus-auto m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses/data-analytics-basics/lessons/data-sources/finish_unit?unit=theory" data-disabled="true" data-block="true" disabled=""><span class="m_80f1301b mantine-Button-inner"><span class="m_811560b9 mantine-Button-label">→</span></span></a><button style="--ai-size:var(--ai-size-sm);--ai-bg:transparent;--ai-hover:var(--mantine-color-indigo-light-hover);--ai-color:var(--mantine-color-indigo-light-color);--ai-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;padding-block:var(--mantine-spacing-lg);color:inherit;width:100%" class="mantine-focus-auto m_8d3f4000 mantine-ActionIcon-root m_87cf2631 mantine-UnstyledButton-root" data-variant="subtle" data-size="sm" data-disabled="true" type="button" disabled=""><span class="m_8d3afb97 mantine-ActionIcon-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-list-numbers "><path d="M11 6h9"></path><path d="M11 12h9"></path><path d="M12 18h8"></path><path d="M4 16a2 2 0 1 1 4 0c0 .591 -.5 1 -1 1.5l-3 2.5h4"></path><path d="M6 10v-6l-2 2"></path></svg></span></button><button style="--ai-size:var(--ai-size-sm);--ai-bg:transparent;--ai-hover:var(--mantine-color-indigo-light-hover);--ai-color:var(--mantine-color-indigo-light-color);--ai-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;padding-block:var(--mantine-spacing-lg);color:inherit;width:100%" class="mantine-focus-auto mantine-active m_8d3f4000 mantine-ActionIcon-root m_87cf2631 mantine-UnstyledButton-root" data-variant="subtle" data-size="sm" type="button"><span class="m_8d3afb97 mantine-ActionIcon-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-message "><path d="M8 9h8"></path><path d="M8 13h6"></path><path d="M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12"></path></svg></span></button></div></div></div></div></div></div></div>
</main>
<footer class="bg-dark fw-light text-light px-3 py-5">
<div class="row small">
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 mb-3">Хекслет</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/about">О нас</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/testimonials">Отзывы</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://b2b.hexlet.io" role="button">Корпоративное обучение</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/blog">Блог</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/qna">Вопросы и ответы</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/glossary">Глоссарий</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://help.hexlet.io" data-target="_blank" role="button">Справка</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" target="_blank" rel="noopener noreferrer" href="/map">Карта сайта</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 fw-normal mb-3">Направления</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_devops">DevOps
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_data_analytics">Аналитика
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_backend_development">Бэкенд
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_programming">Программирование
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_testing">Тестирование
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_front_end_dev">Фронтенд
</a></li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5">Профессии</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/devops-engineer-from-scratch">DevOps-инженер с нуля</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/go">Go-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/java">Java-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/python">Python-разработчик </a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/data-analytics">Аналитик данных</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/qa-engineer">Инженер по ручному тестированию</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/php">РНР-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/frontend">Фронтенд-разработчик</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5">Навыки</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/python-django-developer">Django</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/docker">Docker</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/php-laravel-developer">Laravel</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/postman">Postman</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-react-developer">React</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-rest-api">REST API в Node.js</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/spring-boot">Spring Boot</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/typescript">Typescript</a>
</li>
</ul>
</div>
</div>
<hr>
<div class="row">
<div class="col-12 col-sm-4 col-md-2">
<div class="fs-4">
<ul class="list-unstyled d-flex">
<li class="me-3">
<a aria-label="Telegram" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://t.me/hexlet_ru"><span class="bi bi-telegram"></span>
</a></li>
<li>
<a aria-label="Youtube" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://www.youtube.com/user/HexletUniversity"><span class="bi bi-youtube"></span>
</a></li>
</ul>
</div>
<div class="mb-2 d-flex flex-column">
<a class="link-light text-decoration-none" rel="nofollow" href="mailto:support@hexlet.io">support@hexlet.io</a>
<a class="link-light text-decoration-none py-2" target="_blank" href="https://t.me/hexlet_help_bot">t.me/hexlet_help_bot</a>
</div>
<ul class="list-unstyled d-flex">
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://hexlet.io/locale/switch?new_locale=en" data-target="_self" role="button"><span class="my-auto">EN</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 opacity-100 external-link" rel="nofollow" data-href="https://ru.hexlet.io/locale/switch?new_locale=ru" data-target="_self" role="button"><span class="my-auto">RU</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://kz.hexlet.io/locale/switch?new_locale=kz" data-target="_self" role="button"><span class="my-auto">KZ</span>
</span></li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<ul class="list-unstyled fs-4">
<li class="mb-3">
<a class="link-light text-decoration-none" href="tel:8%20800%20100%2022%2047">8 800 100 22 47</a>
<span class="d-block opacity-50 small">бесплатно по РФ</span>
</li>
<li>
<a class="link-light text-decoration-none" href="tel:%2B7%20495%20085%2021%2062">+7 495 085 21 62</a>
<span class="d-block opacity-50 small">бесплатно по Москве</span>
</li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<div class="small mb-3">Образовательные услуги оказываются на основании Л035-01298-77/01989008 от 14.03.2025</div>
<ul class="list-unstyled small">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/legal">Правовая информация</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/offer">Оферта</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/license">Лицензия</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/contacts">Контакты</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-12 col-md-4 small">
<div class="mb-2">
<div>ООО «<a href="/" class="text-decoration-none link-light">Хекслет Рус</a>»</div>
<div>108813 г. Москва, вн.тер.г. поселение Московский,</div>
<div>г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3</div>
<div>ОГРН 1217300010476</div>
<div>ИНН 7325174845</div>
</div>
<hr>
<div>АНО ДПО «<a href="/" class="text-decoration-none link-light">Учебный центр «Хекслет</a>»</div>
<div>119331 г. Москва, вн. тер. г. муниципальный округ</div>
<div>Ломоносовский, пр-кт Вернадского, д. 29</div>
<div>ОГРН 1247700712390</div>
<div>ИНН 7736364948</div>
</div>
</div>
</footer>
<div id="root-assistant-offcanvas"></div>
<script src="/vite/assets/assistant-CdBlNCiQ.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-nkZBEvfU.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-naDSYSy9.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/MarkdownBlock-DbyKWoR_.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-D3e4yh1x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-CGMYrt2Y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/shiki-V011pkdv.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-DRqSHbQE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-XR8Qr8kR.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dist-GCHh59xr.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-B5-OOzBf.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-C-3AFSMn.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useIsomorphicEffect-HJ6VK0D3.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-KSp6QbZ0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-BEvgo0ym.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/classnames-l6ipYlLR.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-BkKovM-s.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/debounce-jMQ_Cf4f.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/i18next-BlSq9s7B.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-U9M77rxp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-DaLxUz_h.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-Bx1Cdrkz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-6XxiPFnt.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-CwjcCKJi.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CkL4ZRHB.js" as="script" crossorigin="anonymous">
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v67327c56f0bb4ef8b305cae61679db8f1769101564043" integrity="sha512-rdcWY47ByXd76cbCFzznIcEaCN71jqkWBBqlwhF1SY7KubdLKZiEGeP7AyieKZlGP9hbY/MhGrwXzJC/HulNyg==" data-cf-beacon='{"version":"2024.11.0","token":"d11015b65d11429ea6b4a2ef37dd7e0b","server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html>