Медиана простыми словами

Карьерник — квиз-тренажёр в Telegram с 1500+ вопросами для собесов аналитика. SQL, Python, A/B, метрики. Бесплатно.

Короткое объяснение

Медиана — значение, которое делит отсортированную выборку пополам. Половина значений выше, половина ниже.

Пример

Зарплаты 5 сотрудников: 50, 60, 70, 80, 500 тыс.

Сортируем (уже): 50, 60, 70, 80, 500.

  • Медиана = 70 (среднее значение)
  • Среднее (mean) = (50+60+70+80+500)/5 = 152

Медиана — более «типичная» зарплата. Mean искажён выбросом (500).

Для чётного количества

Зарплаты: 50, 60, 70, 80.

Сортируем. Середина — между 60 и 70:

Медиана = (60 + 70) / 2 = 65

Medianа vs Среднее

Mean Median
Определение сумма / количество середина сортированной выборки
Чувствительность к выбросам высокая низкая
Удобна для нормальных данных скошенных / с выбросами
Вычисление быстрое требует сортировки

Когда использовать медиану

1. Скошенные данные

Зарплаты, чеки, LTV — распределения с тяжёлым хвостом. Медиана даёт «типичного» клиента.

2. С выбросами

Один кит не искажает медиану.

3. Для «типичного» пользователя

«Сколько типичный клиент тратит?» — медиана. «Сколько в среднем приходится на клиента?» — mean.

Когда использовать среднее

1. Симметричные / нормальные данные

Рост, IQ — mean и median близки.

2. Суммарные расчёты

Total revenue = mean × count. Через медиану так не работает.

3. Для статистических тестов

t-test, ANOVA — для mean.

В SQL

Postgres / Snowflake / Oracle

SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY salary) AS median
FROM employees;

MySQL 8+

SELECT AVG(salary) AS median
FROM (
    SELECT salary, ROW_NUMBER() OVER (ORDER BY salary) AS rn, COUNT(*) OVER () AS cnt
    FROM employees
) t
WHERE rn IN (FLOOR((cnt + 1) / 2), CEIL((cnt + 1) / 2));

BigQuery

SELECT PERCENTILE_CONT(salary, 0.5) OVER() AS median
FROM employees
LIMIT 1;

В Python

import numpy as np
import pandas as pd

np.median([50, 60, 70, 80, 500])   # 70
pd.Series(data).median()            # 70

# квантили
np.percentile(data, 50)             # медиана
np.percentile(data, [25, 50, 75])   # квартили

В A/B-тестах

Для метрик с тяжёлым хвостом (чек, время сессии):

# mean (обманчив)
control_mean = np.mean(control_amount)   # 2000
test_mean    = np.mean(test_amount)      # 2050  → 2.5% рост

# median (реальнее)
control_median = np.median(control_amount)   # 800
test_median    = np.median(test_amount)      # 810  → 1.25% рост

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

Статистический тест для медиан: Mann-Whitney U или bootstrap.

Проблемы медианы

1. Нечувствительна к крайностям

Один клиент потратил миллион → не отражается на медиане. Если бизнес это важно — смотрите и mean, и P95.

2. Сложнее вычислять

Требует сортировки → O(n log n). На больших данных — дольше.

3. Не всегда однозначна

При чётном количестве — среднее двух центральных. Или берут любое из двух (Disc).

4. Нельзя складывать

Mean можно усреднять по группам через sum. Median — нельзя (не аддитивна).

На собесе

«Что такое медиана?» Середина отсортированной выборки.

«Когда использовать вместо среднего?» Для скошенных данных и при наличии выбросов.

«Что такое mean если median разные?» Данные скошены. Есть тяжёлый хвост.

«Как посчитать в SQL?» PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY col).

Связанные метрики

  • Mean (среднее)
  • Mode (мода) — самое частое значение
  • Percentiles: P25 (Q1), P50 (median), P75 (Q3), P95, P99
  • IQR = P75 − P25 (inter-quartile range)

Частые ошибки

1. Использовать mean везде

На скошенных данных mean обманывает. Типичная ошибка на собесах.

2. Median без контекста

«Медиана 70K» ок, но лучше показать распределение.

3. Складывать медианы

Median(A + B) ≠ Median(A) + Median(B). Не аддитивна.

4. Использовать median для A/B-теста с обычным t-test

Нужен Mann-Whitney U или bootstrap для сравнения медиан.

Связанные темы

FAQ

Mean или median?

Зависит от данных. Нормальные → mean. Скошенные → median.

Как посчитать в Excel?

=MEDIAN(range).

Обе метрики вместе?

Да, часто полезно. Mean показывает «в среднем», median — «типично».

Median чувствительна к количеству данных?

Меньше, чем mean. Но для очень маленьких выборок (n < 10) обе могут быть нестабильны.


Тренируйте статистику — откройте тренажёр с 1500+ вопросами для собесов.