Типы данных и шкалы измерения
Какую статистику можно считать, а какую нельзя — определяется типом данных. Поэтому с типов всё и начинается.
Тип данных — это то, какого рода значения хранит переменная и какие операции над ними осмысленны. Перепутать тип — посчитать «среднюю профессию» или «медианный цвет».
Два больших семейства
Любую переменную (столбец таблицы) можно отнести к одному из двух семейств.
- Количественные (числовые) — измеряют «сколько»: рост, цена, число кликов, температура. С ними осмысленна арифметика.
- Дискретные — считаются целыми (число детей, заказов, ошибок).
- Непрерывные — могут принимать любое значение в диапазоне (рост 178.4 см, время 3.27 c).
- Категориальные (качественные) — обозначают «какой»: цвет, город, пол, тип устройства. Это метки, а не количества.
Четыре шкалы измерения
Внутри этих семейств различают четыре шкалы — они говорят, какие операции законны.
| Шкала | Пример | Что можно |
| Номинальная | город, цвет, бренд | только считать частоты, искать моду |
| Порядковая | оценка «плохо/норм/отлично», уровень образования | упорядочивать, брать медиану |
| Интервальная | температура в °C, год | складывать разности; нет «настоящего нуля» |
| Относительная | рост, цена, вес, время | всё, включая отношения «в 2 раза больше» |
Ключевой нюанс интервальной шкалы: 20 °C — это не «в два раза теплее», чем 10 °C, потому что ноль в Цельсии условный. А вот товар за 200 рублей действительно вдвое дороже товара за 100 — у цены есть настоящий ноль, это относительная шкала.
Почему это важно на практике
Тип данных диктует, какую статистику и какой график применять. Среднее по номинальной переменной — бессмыслица.
from collections import Counter
from statistics import mean, median
# Категориальные данные: любимый цвет
colors = ["red", "blue", "blue", "green", "blue", "red"]
print("Частоты:", Counter(colors))
print("Самый частый (мода):", Counter(colors).most_common(1)[0][0])
# Количественные данные: оценки за тест
scores = [3, 5, 4, 5, 2, 4, 5]
print("Среднее по оценкам:", round(mean(scores), 2))
print("Медиана оценок:", median(scores))
Вывод:
Частоты: Counter({'blue': 3, 'red': 2, 'green': 1})
Самый частый (мода): blue
Среднее по оценкам: 4
Медиана оценок: 4
Для цвета мы спрашиваем «какой встречается чаще» — это мода. Считать «среднее цвета» нельзя: у меток нет числового смысла. Для оценок арифметика уместна, и среднее с медианой имеют смысл.
Осторожно: числа, которые на самом деле категории
Частая ошибка новичка — увидеть в столбце числа и сразу считать среднее. Но почтовый индекс, ID пользователя, номер маршрута автобуса — это числа-метки. «Средний почтовый индекс» бессмыслен. Прежде чем считать, спросите себя: осмысленна ли над этими числами арифметика?
from statistics import mean
# Это числа, но это КАТЕГОРИИ (коды городов)
city_codes = [495, 812, 495, 343, 812]
print("Среднее кода (бессмыслица):", mean(city_codes))
# Правильно — частоты
from collections import Counter
print("Частоты кодов:", dict(Counter(city_codes)))
Вывод:
Среднее кода (бессмыслица): 591.4
Частоты кодов: {495: 2, 812: 2, 343: 1}
Python честно посчитал среднее, но «средний телефонный код 591.4» не существует. Машина не отличает метку от количества — это работа аналитика.
Итог
- Данные бывают количественные (сколько) и категориальные (какой).
- Четыре шкалы — номинальная, порядковая, интервальная, относительная — задают, какие операции законны.
- Для категорий считают частоты и моду, для количественных — среднее, медиану и т.д.
- Числа-метки (индексы, ID, коды) — это категории; среднее по ним бессмысленно.