Основы анализа данных на Python

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

1. Введение в Python для аналитики: настройка окружения и основы синтаксиса

Введение в Python для аналитики: настройка окружения и основы синтаксиса

Добро пожаловать в курс «Основы анализа данных на Python». Это первая статья, с которой начнется ваше погружение в мир данных, статистики и программирования. Сегодня мы не просто изучим синтаксис языка, но и подготовим профессиональное рабочее место, которое используют аналитики в ведущих технологических компаниях.

Почему именно Python? За последние десять лет этот язык стал стандартом де-факто в индустрии Data Science. Он сочетает в себе простоту изучения с мощнейшим набором библиотек для обработки данных, визуализации и машинного обучения. Если Excel — это калькулятор на стероидах, то Python — это завод по переработке данных, который вы можете построить своими руками.

!Иллюстрация рабочего процесса аналитика данных с использованием Python

Настройка окружения: Anaconda и Jupyter

Прежде чем писать код, нам нужно место, где мы будем это делать. Профессиональные разработчики часто используют сложные среды разработки (IDE), такие как PyCharm или VS Code. Однако для аналитиков данных золотым стандартом является Jupyter Notebook.

Jupyter Notebook — это интерактивная среда, которая позволяет объединять код, результаты его выполнения (числа, таблицы, графики) и форматированный текст в одном документе. Это идеально подходит для проведения исследований: вы пишете гипотезу, тут же пишете код для её проверки и сразу видите результат.

Установка Anaconda

Самый простой способ получить Python вместе с Jupyter Notebook и всеми необходимыми библиотеками (Pandas, NumPy, Matplotlib) — это установить дистрибутив Anaconda.

  • Перейдите на официальный сайт Anaconda.
  • Скачайте версию Anaconda Distribution для вашей операционной системы (Windows, macOS или Linux).
  • Запустите установщик и следуйте инструкциям. Рекомендуется оставлять настройки по умолчанию.
  • После установки откройте программу Anaconda Navigator и нажмите кнопку «Launch» под иконкой Jupyter Notebook. У вас откроется браузер со списком файлов вашего компьютера. Создайте новый файл, выбрав New -> Python 3.

    Основы синтаксиса Python для аналитика

    Python славится своей читаемостью. Код на Python часто выглядит как обычный английский текст. Давайте разберем базовые концепции, которые необходимы для работы с данными.

    Переменные и типы данных

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

    В Python не нужно заранее объявлять тип переменной (это называется динамической типизацией). Вы просто присваиваете значение.

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

    * Integer (int): Целые числа. Используются для счетчиков (количество заказов, число посетителей). * Float (float): Числа с плавающей точкой. Используются для метрик, денег, процентов. * String (str): Текст. Категории товаров, отзывы, адреса. * Boolean (bool): Истина или Ложь. Используется для фильтрации (например, клиент активен или нет).

    Структуры данных: Списки и Словари

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

    #### Списки (Lists)

    Список — это упорядоченная коллекция элементов. В анализе данных списки часто представляют собой колонку из таблицы Excel.

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

    #### Словари (Dictionaries)

    Словарь хранит данные в формате «ключ: значение». Это очень похоже на одну строку из базы данных или JSON-объект.

    Базовые математические операции

    Python отлично справляется с арифметикой. Помимо стандартных сложения +, вычитания -, умножения и деления /, аналитику часто нужны возведение в степень * и остаток от деления %.

    Рассмотрим пример расчета простой метрики. Допустим, нам нужно найти средний чек (Average Order Value — AOV). Математически это выглядит так:

    Где: * — средний чек (Average Order Value). * — общая выручка (Revenue). * — количество заказов (Count).

    В коде это реализуется следующим образом:

    Иногда нам нужно рассчитать более сложные вещи, например, отклонение от нормы. Рассмотрим формулу стандартного отклонения (для генеральной совокупности), чтобы понять, как переводить математику в код:

    Где: * — стандартное отклонение (сигма). * — квадратный корень. * — знак суммы (сумма всех элементов). * — конкретное значение из набора данных. * — среднее значение (мю). * — общее количество элементов.

    Хотя в Python для этого есть готовые библиотеки, полезно понимать логику. Мы бы сначала нашли среднее, затем сумму квадратов разностей, поделили на и извлекли корень.

    Условные операторы (If / Else)

    Анализ данных невозможен без фильтрации и сегментации. Условные операторы позволяют программе принимать решения.

    Важное правило синтаксиса: В Python блоки кода выделяются отступами (обычно 4 пробела или 1 Tab). Здесь нет фигурных скобок {}, как в C++ или Java. Отступы — это часть языка.

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

    Циклы (Loops)

    Циклы позволяют выполнять одно и то же действие для набора данных. Самый популярный цикл в Python — for.

    Здесь переменная sale по очереди принимает значение каждого элемента из списка daily_sales. Это фундаментальный принцип обработки данных: «взять коллекцию и сделать что-то с каждым её элементом».

    !Схематичное изображение итерации цикла по списку значений

    Функции

    Если вы пишете один и тот же код несколько раз, его стоит упаковать в функцию. Функция — это именованный блок кода.

    Функции делают ваш анализ воспроизводимым и аккуратным.

    Библиотеки: Сила Python

    Сам по себе «чистый» Python (Pure Python) используется для общей логики. Но вся мощь аналитики кроется в библиотеках. Библиотека — это набор готовых функций и инструментов, написанных другими разработчиками.

    Чтобы использовать библиотеку, её нужно импортировать командой import.

    В следующих уроках мы будем работать с «большой тройкой» библиотек:

  • Pandas — для работы с табличными данными (аналог Excel в коде).
  • NumPy — для быстрых математических вычислений.
  • Matplotlib / Seaborn — для визуализации данных.
  • Заключение

    Сегодня мы подготовили фундамент. Вы узнали, как настроить окружение с помощью Anaconda, познакомились с Jupyter Notebook и освоили базовый синтаксис Python: переменные, списки, словари, условия и циклы. Эти знания — алфавит, с помощью которого мы будем писать сложные аналитические истории в следующих статьях.

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

    2. Библиотека NumPy и введение в Pandas: работа с массивами и датафреймами

    Библиотека NumPy и введение в Pandas: работа с массивами и датафреймами

    В предыдущей статье мы настроили окружение Anaconda и изучили базовый синтаксис Python: списки, словари и циклы. Вы могли заметить, что стандартные списки Python (Lists), хоть и удобны для хранения разнородных данных, не очень подходят для математики. Попробуйте умножить список на число, и Python просто продублирует его содержимое, вместо того чтобы умножить каждый элемент.

    В анализе данных нам нужна скорость и математическая логика. Именно здесь на сцену выходят две фундаментальные библиотеки, на которых держится весь Data Science: NumPy и Pandas.

    NumPy: Фундамент вычислений

    NumPy (Numerical Python) — это библиотека, добавляющая в Python поддержку быстрых массивов и математических функций. Она написана на языке C, поэтому работает в десятки и сотни раз быстрее, чем обычный код на Python.

    Чтобы начать работать с библиотекой, её нужно импортировать. Общепринятый стандарт — использовать сокращение np.

    Массивы ndarray

    Главный объект в NumPy — это ndarray (n-dimensional array, n-мерный массив). В отличие от списка Python, массив NumPy обязан содержать данные одного типа (обычно числа). Это ограничение позволяет компьютеру хранить данные в памяти компактно и обрабатывать их молниеносно.

    !Сравнение структуры хранения данных в списке Python и массиве NumPy

    Создадим наш первый массив из обычного списка:

    Векторизация: Магия NumPy

    Самое мощное свойство NumPy — это векторизация. Это способность выполнять операции над всем массивом сразу, без использования циклов for.

    Представьте, что у нас есть цены товаров в долларах, и мы хотим перевести их в рубли по курсу 90.

    Вариант на чистом Python:

    Вариант с NumPy:

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

    Где: * — элемент результирующего массива с индексом . * — элемент первого массива с индексом . * — элемент второго массива с индексом . * — операция сложения.

    Базовая статистика с NumPy

    Аналитику часто нужно быстро оценить данные: найти среднее, минимум или максимум. NumPy делает это одной командой.

    Рассмотрим формулу среднего арифметического, чтобы понимать, что происходит «под капотом» метода .mean():

    Где: * — среднее арифметическое (читается как «икс с чертой»). * — количество элементов в массиве. * — знак суммирования (сигма). * — каждый отдельный элемент массива от первого до последнего.

    Pandas: Excel на стероидах

    Если NumPy — это мощный калькулятор, то Pandas — это мощнейшая таблица. В реальной жизни данные редко бывают просто набором чисел. У них есть названия колонок, даты, идентификаторы клиентов. Pandas создан специально для работы с такими структурированными данными.

    Импортируем библиотеку под стандартным псевдонимом pd:

    Series и DataFrame

    В Pandas есть две основные структуры данных:

  • Series (Серия) — это одномерный массив с метками (индексом). По сути, это одна колонка из таблицы.
  • DataFrame (Датафрейм) — это полноценная таблица, состоящая из нескольких Series. Это аналог листа в Excel.
  • !Анатомия Pandas DataFrame: Индексы, Колонки и Данные

    Создание DataFrame

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

    Если вывести переменную df в Jupyter Notebook, вы увидите красиво отформатированную таблицу.

    Изучение данных

    Когда вы получаете новый датасет, первое, что нужно сделать — осмотреться. Для этого есть несколько незаменимых методов:

    * df.head(n) — показывает первые строк таблицы (по умолчанию 5). Идеально, чтобы понять структуру. * df.info() — выводит техническую информацию: типы данных в колонках и количество непустых значений. * df.describe() — выводит статистическую сводку для числовых колонок (среднее, отклонение, квартили).

    Пример использования describe():

    Этот метод автоматически рассчитает метрики. Например, стандартное отклонение, которое показывает разброс данных относительно среднего. Вспомним формулу из прошлого урока, которую Pandas считает за нас:

    Где: * — стандартное отклонение выборки. * — квадратный корень. * — сумма. * — конкретное значение. * — среднее значение выборки. * — количество элементов минус один (поправка Бесселя для выборки).

    Доступ к данным

    Как получить данные из конкретной колонки? Очень просто — используйте квадратные скобки и название колонки (как в словаре).

    Фильтрация данных

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

    Допустим, мы хотим найти все города, где продажи больше 140.

    Создание новых колонок

    Аналитика — это часто создание новых метрик на основе старых. В Pandas можно создавать новые колонки, используя векторизацию (как в NumPy).

    Предположим, мы хотим добавить колонку с налогом (20% от продаж).

    Теперь в нашей таблице df появилась четвертая колонка Tax, рассчитанная для каждой строки автоматически.

    Заключение

    Сегодня мы сделали огромный шаг вперед. Мы перешли от базового Python к профессиональным инструментам. NumPy дал нам скорость и математическую мощь, а Pandas предоставил удобный интерфейс для работы с таблицами.

    В следующей статье мы применим эти знания на практике: научимся загружать реальные файлы (CSV, Excel), чистить «грязные» данные и готовить их к глубокому анализу.

    3. Очистка и предварительная обработка данных: работа с пропусками и типами

    Очистка и предварительная обработка данных: работа с пропусками и типами

    Добро пожаловать на третий урок курса «Основы анализа данных на Python». В прошлых статьях мы научились настраивать окружение и познакомились с библиотеками NumPy и Pandas. Мы создавали идеальные таблицы вручную, где все числа были на своих местах, а типы данных соответствовали ожиданиям.

    Однако реальность аналитика данных сурова. Данные из реального мира — «грязные». В них встречаются опечатки, пропущенные значения, дубликаты и странные форматы (например, число, записанное как текст). Существует принцип GIGO (Garbage In, Garbage Out) — «Мусор на входе — мусор на выходе». Если вы построите модель машинного обучения или аналитический отчет на неочищенных данных, результаты будут ложными.

    Сегодня мы займемся «генеральной уборкой»: научимся находить и исправлять ошибки в данных, обрабатывать пропуски и приводить типы к нужному формату.

    !Процесс трансформации «грязных» сырых данных в структурированный и чистый набор данных.

    Загрузка данных

    Прежде чем чистить данные, их нужно загрузить. В 90% случаев аналитики работают с форматом CSV (Comma-Separated Values). Это простой текстовый файл, где данные разделены запятыми.

    После загрузки первым делом мы смотрим на размерность данных и первые строки:

    Работа с пропусками (Missing Values)

    Пропуски — это бич любых данных. В Python (и конкретно в библиотеках Pandas/NumPy) отсутствующее значение обозначается как NaN (Not a Number) или None.

    Почему появляются пропуски? * Пользователь не заполнил поле при регистрации. * Ошибка при выгрузке из базы данных. * Данные за этот период просто не собирались.

    Обнаружение пропусков

    На глаз найти пропуски в таблице из миллиона строк невозможно. Используем методы isna() и sum().

    Часто полезно знать не абсолютное число пропусков, а их долю. Это помогает принять решение: если в колонке 99% пропусков, её проще удалить.

    Формула расчета доли пропусков:

    Где: * — процент пропущенных значений. * — количество пропущенных значений (NaN). * — общее количество строк в датасете. * — множитель для перевода в проценты.

    В коде это выглядит так:

    Стратегии обработки пропусков

    Что делать с дырками в данных? Есть два основных пути: удаление и заполнение.

    #### 1. Удаление данных

    Самый радикальный метод. Если в строке не хватает важных данных (например, нет user_id), такая строка нам бесполезна.

    Риски: Вы можете потерять слишком много данных.

    #### 2. Заполнение (Импутация)

    Более тонкий подход — заполнить пустоту логичным значением. Метод fillna() позволяет это сделать.

    Заполнение константой: Если пропущено количество детей, логично предположить, что их 0.

    Заполнение средним или медианой: Для числовых данных (например, возраст или доход) часто используют среднее арифметическое или медиану.

    Здесь важно понимать разницу. Среднее чувствительно к выбросам (один миллионер исказит средний доход всей деревни), а медиана — нет. Если в данных есть аномалии, лучше использовать медиану.

    Типы данных и их преобразование

    Вторая частая проблема — неверные типы данных. Например, колонка price (цена) может определиться как текст (object), потому что кто-то случайно ввел туда символ валюты «$».

    Посмотреть типы данных можно командой:

    Основные типы в Pandas: * int64 — целые числа. * float64 — числа с плавающей точкой. * object — текст (строки) или смешанные данные. * bool — логический тип (True/False). * datetime64 — дата и время.

    Изменение типов (Casting)

    Для явного приведения типа используется метод astype().

    Предположим, у нас есть колонка views (просмотры), которая записана как текст, но мы хотим совершать над ней математические операции.

    Работа с датами

    Даты — это особый случай. Если дата хранится как строка "2023-01-01", вы не сможете вычесть из неё другую дату или найти день недели. Для этого нужно перевести колонку в формат datetime.

    !Визуализация того, как Pandas разбирает дату на составляющие элементы для анализа.

    Поиск и удаление дубликатов

    Дубликаты искажают статистику. Если один и тот же заказ записан дважды, ваша выручка будет завышена.

    Иногда нужно удалить дубликаты только по определенному ключу. Например, если пользователь нажал кнопку «Отправить» дважды, у нас может быть две записи с одним transaction_id.

    Практический пример: Очистка датасета

    Давайте соберем всё вместе. Представьте, что у нас есть «грязный» датафрейм с информацией о клиентах.

    Шаг 1: Удаляем дубликаты Мы видим, что клиент 101 записан дважды.

    Шаг 2: Исправляем типы данных В колонке age есть строка '40', из-за которой вся колонка считается текстом. А в joined_at есть мусор 'N/A'.

    Шаг 3: Заполняем пропуски Теперь у нас есть NaN в возрасте (там, где было пусто, и там, где была ошибка). Заполним их средним возрастом.

    Теперь наш датасет чист, типизирован и готов к анализу.

    Заключение

    Очистка данных — это процесс, занимающий до 80% времени аналитика. Но это фундамент, без которого невозможно построить красивое здание аналитики. Сегодня вы научились:

  • Находить и считать пропуски (isna).
  • Принимать решение: удалять (dropna) или заполнять (fillna).
  • Менять типы данных (astype, to_datetime).
  • Бороться с дубликатами (drop_duplicates).
  • В следующем уроке мы перейдем к самой творческой части работы — Разведочному анализу данных (EDA) и визуализации. Мы научимся строить графики, которые рассказывают истории.

    4. Визуализация данных: построение графиков с помощью Matplotlib и Seaborn

    Визуализация данных: построение графиков с помощью Matplotlib и Seaborn

    Добро пожаловать на четвертый урок курса «Основы анализа данных на Python». В прошлых статьях мы прошли путь от установки Anaconda до очистки «грязных» данных с помощью Pandas. Теперь, когда у нас есть чистые и структурированные таблицы, возникает вопрос: как понять, что скрывается за этими рядами цифр?

    Человеческий мозг плохо воспринимает сухие таблицы. Нам сложно заметить тренды или аномалии, просматривая тысячи строк в Excel. Здесь на помощь приходит визуализация. Грамотно построенный график может рассказать историю данных быстрее и убедительнее, чем самый подробный отчет.

    Сегодня мы изучим две главные библиотеки для визуализации в Python: Matplotlib и Seaborn.

    !Трансформация табличных данных в визуальные графики

    Matplotlib: Дедушка визуализации

    Matplotlib — это базовая библиотека для построения графиков в Python. Она существует уже очень давно и является фундаментом для большинства других инструментов визуализации (включая Seaborn и даже встроенные методы Pandas).

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

    Анатомия графика

    Чтобы работать с Matplotlib, нужно понимать его иерархию. График состоит из двух главных объектов:

  • Figure (Фигура) — это «холст» или окно, на котором рисуется всё содержимое.
  • Axes (Оси) — это сам график с системой координат, который размещается внутри Figure.
  • !Схема строения графика в Matplotlib с подписями основных элементов

    Первый график

    Для начала работы импортируем модуль pyplot под стандартным псевдонимом plt.

    python

    Боксплот для поиска аномалий в чаевых

    sns.boxplot(data=tips, x="day", y="total_bill") plt.title("Разброс чеков по дням недели") plt.show() python

    Вычисляем матрицу корреляций

    corr_matrix = tips.corr(numeric_only=True)

    Строим тепловую карту

    sns.heatmap(corr_matrix, annot=True, cmap="coolwarm") plt.title("Матрица корреляций") plt.show() ``

    Цвет ячейки говорит о силе связи: красный — сильная прямая связь, синий — обратная.

    Как выбрать правильный график?

    Чтобы не запутаться, следуйте простому алгоритму:

  • Хотите увидеть распределение одной переменной?
  • * Используйте Histogram (
    sns.histplot) или Boxplot (sns.boxplot).
  • Хотите сравнить разные категории?
  • * Используйте Barplot (
    sns.barplot).
  • Хотите найти связь между двумя числами?
  • * Используйте Scatterplot (
    sns.scatterplot).
  • Хотите увидеть динамику во времени?
  • * Используйте Lineplot (
    plt.plot или sns.lineplot`).

    Заключение

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

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

    5. Разведочный анализ данных (EDA) и выявление статистических закономерностей

    Разведочный анализ данных (EDA) и выявление статистических закономерностей

    Добро пожаловать на пятый урок курса «Основы анализа данных на Python». Мы прошли долгий путь: настроили окружение, научились манипулировать таблицами в Pandas, очистили данные от мусора и даже построили первые красивые графики с Seaborn. Теперь у нас есть все инструменты, чтобы заняться Разведочным анализом данных (Exploratory Data Analysis — EDA).

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

    !Аналитик в роли детектива ищет скрытые связи между данными.

    Что такое EDA и зачем он нужен?

    Разведочный анализ данных был популяризирован математиком Джоном Тьюки в 1970-х годах. Главная идея проста: прежде чем применять сложные алгоритмы, нужно посмотреть на данные «глазами» и понять их структуру.

    Основные цели EDA:

  • Понять распределение переменных: Как часто встречаются те или иные значения?
  • Найти взаимосвязи: Зависит ли цена квартиры от этажа? Влияет ли скидка на объем продаж?
  • Обнаружить аномалии: Есть ли в данных ошибки или мошеннические транзакции?
  • Проверить гипотезы: Действительно ли продажи падают в выходные?
  • Описательная статистика: Центр и Разброс

    Первый шаг в EDA — это одномерный анализ (Univariate Analysis). Мы берем одну переменную и пытаемся описать её несколькими числами.

    Меры центральной тенденции

    Где находится «центр» наших данных? У нас есть три главных героя:

    * Среднее (Mean): Сумма всех значений, деленная на их количество. Чувствительно к выбросам. * Медиана (Median): Значение, которое делит отсортированный ряд пополам. Устойчива к выбросам. * Мода (Mode): Самое часто встречающееся значение.

    Если среднее значение сильно отличается от медианы, это верный признак того, что в данных есть перекос (асимметрия) или выбросы.

    Меры разброса (Дисперсия и Стандартное отклонение)

    Знать среднее недостаточно. Представьте две группы людей со средним возрастом 30 лет. В первой группе всем по 30. Во второй — половина новорожденных, половина — 60-летние. Среднее одинаковое, а суть разная. Нам нужно измерить разброс.

    Ключевая метрика здесь — стандартное отклонение (Standard Deviation). Оно показывает, насколько в среднем значения отклоняются от центра.

    Формула стандартного отклонения для выборки:

    Где: * — стандартное отклонение выборки. * — квадратный корень. * — знак суммы (сумма всех слагаемых). * — конкретное значение из набора данных. * — среднее арифметическое выборки. * — количество элементов в выборке. * — поправка Бесселя (используется для более точной оценки генеральной совокупности по выборке).

    В Python это считается одной командой:

    Поиск взаимосвязей: Корреляция

    Когда мы анализируем две количественные переменные (например, «Цена нефти» и «Курс доллара»), нам важно понять, как они связаны. Двигаются ли они в одну сторону?

    Для этого используется Коэффициент корреляции Пирсона (). Он принимает значения от -1 до 1.

    * : Полная положительная связь (одно растет, другое растет). * : Полная отрицательная связь (одно растет, другое падает). * : Связи нет (хаос).

    Математически коэффициент Пирсона выглядит пугающе, но логика в нем изящная:

    Где: * — коэффициент корреляции Пирсона. * и — значения двух переменных для одного наблюдения. * и — средние значения этих переменных. * — сумма произведений отклонений.

    В Pandas матрица корреляций строится мгновенно:

    > Важно: Корреляция не означает причинно-следственную связь (Correlation is not Causation). Если продажи мороженого коррелируют с количеством нападений акул, это не значит, что акулы любят мороженое. Просто обе величины зависят от третьей переменной — температуры воздуха (лето).

    Нормальное распределение и правило 3-х сигм

    В анализе данных часто встречается Нормальное распределение (распределение Гаусса). Графически это выглядит как симметричный «колокол».

    Почему это важно? Потому что для нормального распределения работает правило трех сигм:

  • 68% данных находятся в пределах стандартного отклонения () от среднего.
  • 95% данных находятся в пределах .
  • 99.7% данных находятся в пределах .
  • !Схематичное изображение правила трех сигм на нормальном распределении.

    Это дает нам мощный инструмент для поиска аномалий (выбросов) через Z-оценку (Z-score). Z-оценка показывает, на сколько стандартных отклонений конкретное значение удалено от среднего.

    Где: * — Z-оценка (Z-score). * — проверяемое значение. * — среднее значение (мю). * — стандартное отклонение (сигма).

    Если (значение ушло дальше 3-х сигм), с вероятностью 99.7% это аномалия или редкое событие.

    Практический чек-лист EDA

    Чтобы провести качественный анализ, следуйте этому алгоритму:

  • Осмотр данных:
  • * df.head(), df.info(), df.describe(). * Проверка типов данных и пропусков.
  • Одномерный анализ (Univariate):
  • * Для чисел: гистограммы (sns.histplot) и ящики с усами (sns.boxplot). Ищем скошенность и выбросы. * Для категорий: столбчатые диаграммы (sns.countplot). Ищем дисбаланс классов.
  • Двумерный анализ (Bivariate):
  • * Число vs Число: диаграмма рассеяния (sns.scatterplot) и корреляция. * Число vs Категория: боксплот по группам (sns.boxplot(x='cat', y='num')). * Категория vs Категория: сводные таблицы (pd.crosstab) и тепловые карты.
  • Многомерный анализ:
  • * Использование цвета (hue) на графиках для добавления третьего измерения. * sns.pairplot() для просмотра всех парных связей сразу.

    Пример анализа категориальных данных

    Часто инсайты скрыты в сравнении групп. В Pandas для этого используется метод groupby. Это аналог сводных таблиц в Excel.

    Допустим, мы хотим узнать, кто оставляет больше чаевых: мужчины или женщины, и зависит ли это от времени дня (обед/ужин).

    Этот код разобьет данные на группы (Мужчина-Обед, Мужчина-Ужин, Женщина-Обед, Женщина-Ужин) и для каждой посчитает среднее. Визуализировать это можно с помощью тепловой карты (sns.heatmap), предварительно превратив таблицу обратно в матричный вид методом unstack().

    Заключение

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

    На этом наш вводный курс «Основы анализа данных на Python» подходит к концу. Вы прошли путь от установки Anaconda до поиска статистических закономерностей. Теперь вы обладаете фундаментом, на котором можно строить карьеру в Data Science, углубляясь в машинное обучение, A/B тесты или инженерию данных. Данные говорят с теми, кто умеет их слушать. Удачи в ваших исследованиях!